UniSet 2.44.3
Класс uniset::UWebSocketGate::UWebSocket

#include <UWebSocketGate.h>

Граф наследования:uniset::UWebSocketGate::UWebSocket:
Граф связей класса uniset::UWebSocketGate::UWebSocket:

Классы

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 onLifetimeExpired (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 &sec)
void setMaxLifetime (const double &sec)

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

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::timer iolifetime
double maxLifetime_sec = { 0 }
std::chrono::steady_clock::time_point sessionStart
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::mutex dataMutex
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 size_t sbufLim = (size_t)(0.8 * sbufLen)
static const std::string ping_str = "."

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

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

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

◆ recvTimeout

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