11typedef struct NetQueueSelect NetQueueSelect;
12typedef struct NetQueueSelect_WeakRef NetQueueSelect_WeakRef;
15#define _sti_NetQueueSelect _sti_object
16#define SType_NetQueueSelect NetQueueSelect*
17#define STStorageType_NetQueueSelect NetQueueSelect*
18#define STypeArg_NetQueueSelect(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(NetQueueSelect, val))
19#define STypeArgPtr_NetQueueSelect(type, val) (stgeneric*)objInstCheckClassPtr(NetQueueSelect, val)
20#define STypeCheckedArg_NetQueueSelect(type, val) stType(type), stArg(type, val)
21#define STypeCheckedPtrArg_NetQueueSelect(type, val) stType(type), stArgPtr(type, val)
23typedef struct NetQueueSelect_ClassIf {
28 bool (*addSocket)(_In_
void* self,
NetSocket* socket);
29 bool (*removeSocket)(_In_
void* self,
NetSocket* socket);
51 void (*connectArm)(_In_
void* self,
NetSocket* sock);
59 void (*acceptArm)(_In_
void* self,
NetSocket* sock);
60 bool (*shutdown)(_In_
void* self, int64 timeout);
61 bool (*tick)(_In_
void* self, int64 wait);
62} NetQueueSelect_ClassIf;
63extern NetQueueSelect_ClassIf NetQueueSelect_ClassIf_tmpl;
65typedef struct NetQueueSelect {
67 NetQueueSelect_ClassIf* _;
68 void* _is_NetQueueSelect;
107 atomic(uint32) gcLastLo;
112 atomic(uint32) droppedNoBuf;
113 atomic(uint32) nflows;
117 NetTimerEntry* timers;
126 atomic(uint32) timersLive;
134 atomic(uint32) shutdownReq;
141 NetSendPumpFn sendPump;
167#define NetQueueSelect(inst) objInstCheckClass(NetQueueSelect, inst)
168#define NetQueueSelectNone ((NetQueueSelect*)NULL)
170typedef struct NetQueueSelect_WeakRef {
173 void* _is_NetQueueSelect_WeakRef;
174 void* _is_NetQueue_WeakRef;
175 void* _is_ObjInst_WeakRef;
177 atomic(uintptr) _ref;
179} NetQueueSelect_WeakRef;
180#define NetQueueSelect_WeakRef(inst) objWeakRefCheckClass(NetQueueSelect, inst)
184#define netqueueselectCreate(conf) NetQueueSelect_create(conf)
187#define netqueueselectConnect(self, host, port, handlers, ctx) NetQueue_connect(NetQueue(self), host, port, handlers, ctx)
190#define netqueueselectConnectPrep(self, host, port, handlers, ctx, prep, prepctx) NetQueue_connectPrep(NetQueue(self), host, port, handlers, ctx, prep, prepctx)
193#define netqueueselectListen(self, addr, backlog, handlers, ctx) NetQueue_listen(NetQueue(self), addr, backlog, handlers, ctx)
196#define netqueueselectSetHandlers(self, handlers, ctx) NetQueue_setHandlers(NetQueue(self), handlers, ctx)
199#define netqueueselectSetHandlersObj(self, handlers, ctx) NetQueue_setHandlersObj(NetQueue(self), handlers, ObjInst(ctx))
202#define netqueueselectPromoteFlow(self, sock, peer) NetQueue_promoteFlow(NetQueue(self), sock, peer)
205#define netqueueselectDroppedNoBuf(self) NetQueue_droppedNoBuf(NetQueue(self))
219#define netqueueselect_applyConfig(self, conf) NetQueue__applyConfig(NetQueue(self), conf)
229#define netqueueselect_startWorkers(self, n) NetQueue__startWorkers(NetQueue(self), n)
236#define netqueueselect_stopWorkers(self, timeout) NetQueue__stopWorkers(NetQueue(self), timeout)
249#define netqueueselect_ingestDatagram(self, sock, peer, info, buf) NetQueue__ingestDatagram(NetQueue(self), sock, peer, info, buf)
255#define netqueueselect_submit(self, flow, msg) NetQueue__submit(NetQueue(self), flow, msg)
265#define netqueueselect_dispatch(self) NetQueue__dispatch(NetQueue(self))
275#define netqueueselect_deliver(self, sock, flow, ev) NetQueue__deliver(NetQueue(self), sock, flow, ev)
284#define netqueueselect_maint(self) NetQueue__maint(NetQueue(self))
294#define netqueueselect_addTimer(self, flow, delay, flags, fn, ctx) NetQueue__addTimer(NetQueue(self), flow, delay, flags, fn, ctx)
301#define netqueueselect_cancelTimer(self, id) NetQueue__cancelTimer(NetQueue(self), id)
307#define netqueueselect_rearmTimer(self, id, delay) NetQueue__rearmTimer(NetQueue(self), id, delay)
313#define netqueueselect_cancelFlowTimers(self, flow) NetQueue__cancelFlowTimers(NetQueue(self), flow)
320#define netqueueselect_timerSweep(self) NetQueue__timerSweep(NetQueue(self))
327#define netqueueselect_nextDeadline(self) NetQueue__nextDeadline(NetQueue(self))
337#define netqueueselect_findFlow(self, sock, peer, create) NetQueue__findFlow(NetQueue(self), sock, peer, create)
343#define netqueueselect_admitFlow(self, sock, peer) NetQueue__admitFlow(NetQueue(self), sock, peer)
355#define netqueueselect_admitFlowObj(self, sock, flow) NetQueue__admitFlowObj(NetQueue(self), sock, flow)
362#define netqueueselect_reclaimFlows(self, sock) NetQueue__reclaimFlows(NetQueue(self), sock)
365#define netqueueselectAddSocket(self, socket) (self)->_->addSocket(NetQueueSelect(self), socket)
367#define netqueueselectRemoveSocket(self, socket) (self)->_->removeSocket(NetQueueSelect(self), socket)
369#define netqueueselectSocket(self, type) (self)->_->socket(NetQueueSelect(self), type)
384#define netqueueselectConnectBegin(self, sock, addr) (self)->_->connectBegin(NetQueueSelect(self), sock, addr)
394#define netqueueselectConnectArm(self, sock) (self)->_->connectArm(NetQueueSelect(self), sock)
404#define netqueueselectAcceptArm(self, sock) (self)->_->acceptArm(NetQueueSelect(self), sock)
406#define netqueueselectShutdown(self, timeout) (self)->_->shutdown(NetQueueSelect(self), timeout)
408#define netqueueselectTick(self, wait) (self)->_->tick(NetQueueSelect(self), wait)
#define saDeclarePtr(name)
NetSocketType
Socket types.
#define _objfactory_guaranteed
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.
Set of event handlers, registered per flow, per socket, or queue-wide.
Shared, capped pool of network message buffers and headers.
Counting semaphore synchronization primitive.