johnsonjh/vos

View on GitHub
wsSrv.h

Summary

Maintainability
Test Coverage
#ifndef WSSRV_H_INCLUDED
#define WSSRV_H_INCLUDED

#include "sock.h"
#include "httpSrv.h"

typedef struct _wsSrv {
    SocketPool srv; // Тут все сокеты (включая слушателя)
    char name[14]; int logLevel; logger *log; // Logging
    //SocketMap **map; // Залинкованные URL (файловые и программные)
    //vssHttp req; // Текущий запрос на обработку - ???
    //uchar *index; // Кешированный индекс (отдается мгновенно - или сделать map?)
    //uchar *buf; // Временный файл (для закачки файлов)
    //uchar *mimes;
    //httpMime *mime; // Пассивная строка и собственно - разобранные маймы для быстрого поиска
    Counter readLimit; // Limiter for incoming counts
    //SocketPool cli; // Клиенты - для редиректа???
    //vss defmime; // DefaultMime for a page ???
    //int keepAlive; // Disconenct after send???
    time_t created; // When it has beed created -)))
    time_t runTill;
    void *handle; // any user defined handle
#ifdef HTTPSRV_AUTH
    char *realm; // report on 401 Unauthorized
    int  (*auth)(char *UserPass, struct _httpSrv *); // user:password, func must return >0 on success
    int  userId; // last auth result (app must copy it)
#endif
    int (*onMessage)(Socket *sock, unsigned char *msg, int len);
    } wsSrv;

VS0OBJH(wsSrv); // Общие декларациии запуска сервиса ...
wsSrv   *wsSrvCreate(); // Создание сервера webSockets

int wsSrvUpgrade(wsSrv *ws, Socket *sock, vssHttp *req); // get HTTP socket & Upgrade connection
int wsSrvStep(wsSrv *srv); // >0 on run

int wsSrvProcess(wsSrv *srv) ; // LOOP till aborted

// send string
int wsPutStr(Socket *sock, char *data,int len);
int wsBroadcast(wsSrv *srv, char *msg,int len); // send to all in a pool



#endif // WSSRV_H_INCLUDED