UniSet 2.32.1
Классы | Открытые члены | Открытые статические члены | Открытые атрибуты | Защищенные члены | Защищенные данные | Статические защищенные данные | Полный список членов класса
Класс uniset::UWebSocketGate::UWebSocket

#include <UWebSocketGate.h>

Граф наследования:uniset::UWebSocketGate::UWebSocket:
Inheritance graph
[см. легенду]
Граф связей класса uniset::UWebSocketGate::UWebSocket:
Collaboration graph
[см. легенду]

Классы

struct  sinfo
 

Открытые члены

 UWebSocket (Poco::Net::HTTPServerRequest *req, Poco::Net::HTTPServerResponse *resp, int jpoolCapacity=100, int jpoolPeakCapacity=500)
 
std::string getInfo () const noexcept
 
bool isActive ()
 
void set (ev::dynamic_loop &loop, std::shared_ptr< ev::async > a)
 
void send (ev::timer &t, int revents)
 
void ping (ev::timer &t, int revents)
 
void read (ev::io &io, int revents)
 
void pong (ev::timer &t, int revents)
 
void ask (uniset::ObjectId id)
 
void del (uniset::ObjectId id)
 
void get (uniset::ObjectId id)
 
void set (uniset::ObjectId id, long value)
 
void freeze (uniset::ObjectId id, long value)
 
void unfreeze (uniset::ObjectId id)
 
void sensorInfo (const uniset::SensorMessage *sm)
 
void doCommand (const std::shared_ptr< SMInterface > &ui)
 
void term ()
 
void waitCompletion ()
 
void setHearbeatTime (const double &sec)
 
void setSendPeriod (const double &sec)
 
void setMaxSendCount (size_t val)
 
void setMaxCmdCount (size_t val)
 
void setPongTimeout (const double &set)
 

Открытые статические члены

static Poco::JSON::Object::Ptr to_short_json (const std::shared_ptr< sinfo > &si)
 
static Poco::JSON::Object::Ptr to_json (const uniset::SensorMessage *sm, const std::shared_ptr< sinfo > &si)
 
static void fill_short_json (Poco::JSON::Object::Ptr &p, const std::shared_ptr< sinfo > &si)
 
static void fill_json (Poco::JSON::Object::Ptr &p, const uniset::SensorMessage *sm, const std::shared_ptr< sinfo > &si)
 

Открытые атрибуты

std::shared_ptr< DebugStreammylog
 

Защищенные члены

void write ()
 
void sendResponse (const std::shared_ptr< sinfo > &si)
 
void sendShortResponse (const std::shared_ptr< sinfo > &si)
 
void onCommand (std::string_view cmd)
 
void sendError (std::string_view message)
 
void returnObjectToPool (Poco::JSON::Object::Ptr &json)
 

Защищенные данные

ev::timer iosend
 
double send_sec = { 0.5 }
 
size_t maxsend = { 5000 }
 
size_t maxcmd = { 200 }
 
const int Kbuf = { 10 }
 
char sbuf [sbufLen]
 
ev::timer ioping
 
double ping_sec = { 3.0 }
 
ev::timer iopong
 
double pongTimeout_sec = { 5.0 }
 
size_t pongCounter = { 0 }
 
ev::io iorecv
 
char rbuf [64 *1024]
 
timeout_t recvTimeout = { 200 }
 
std::shared_ptr< ev::async > cmdsignal
 
std::mutex finishmut
 
std::condition_variable finish
 
std::atomic_bool cancelled = { false }
 
std::unordered_map< uniset::ObjectId, std::shared_ptr< sinfo > > smap
 
std::queue< std::shared_ptr< sinfo > > qcmd
 
Poco::Net::HTTPServerRequest * req
 
Poco::Net::HTTPServerResponse * resp
 
std::queue< Poco::JSON::Object::Ptr > jbuf
 
std::unique_ptr< Poco::ObjectPool< Poco::JSON::Object, Poco::JSON::Object::Ptr > > jpoolSM
 
std::unique_ptr< Poco::ObjectPool< Poco::JSON::Object, Poco::JSON::Object::Ptr > > jpoolErr
 
std::unique_ptr< Poco::ObjectPool< Poco::JSON::Object, Poco::JSON::Object::Ptr > > jpoolShortSM
 
std::unique_ptr< Poco::ObjectPool< uniset::UTCPCore::Buffer > > wbufpool
 
std::queue< uniset::UTCPCore::Buffer * > wbuf
 
size_t maxsize
 

Статические защищенные данные

static const size_t sbufLen = 100 * 1024
 
static const std::string ping_str = "."
 

Подробное описание

класс реализует работу с websocket через eventloop Из-за того, что поступление событий может быть достаточно быстрым чтобы не "завалить" клиента кучей сообщений, сделана посылка не по факту приёма сообщения, а раз в send_sec, не более maxsend сообщений.

Данные класса

◆ recvTimeout

timeout_t uniset::UWebSocketGate::UWebSocket::recvTimeout = { 200 }
protected