|
#define | HNET_VERSION ((uint32_t)0x00010000) |
|
#define | HNET_CMD_DEFEXPR ((uint8_t)0) |
|
#define | HNET_CMD_INVOKE ((uint8_t)2) |
|
#define | HNET_RESULT_FAIL 0 |
|
#define | _HNET_FIRST(a, ...) a |
|
#define | _HNET_SECOND(a, b, ...) b |
|
#define | _HNET_JOIN(a, b) a ## b |
|
#define | _HNET_IS_NEGATE(...) _HNET_SECOND(__VA_ARGS__, 0) |
|
#define | _HNET_NOT(x) _HNET_IS_NEGATE(_HNET_JOIN(_HNET__NOT_, x)) |
|
#define | _HNET__NOT_0 NEGATE, 1 |
|
#define | _HNET_BOOL(x) _HNET_NOT(_HNET_NOT(x)) |
|
#define | _HNET_IF_ELSE(condition) _HNET__IF_ELSE(_HNET_BOOL(condition)) |
|
#define | _HNET__IF_ELSE(condition) _HNET_JOIN(_HNET__IF_, condition) |
|
#define | _HNET__IF_1(...) __VA_ARGS__ _HNET__IF_1_ELSE |
|
#define | _HNET__IF_0(...) _HNET__IF_0_ELSE |
|
#define | _HNET__IF_1_ELSE(...) |
|
#define | _HNET__IF_0_ELSE(...) __VA_ARGS__ |
|
#define | _HNET_EMPTY() |
|
#define | _HNET_EVAL(...) _HNET_EVAL256(__VA_ARGS__) |
|
#define | _HNET_EVAL256(...) _HNET_EVAL128(_HNET_EVAL128(__VA_ARGS__)) |
|
#define | _HNET_EVAL128(...) _HNET_EVAL64(_HNET_EVAL64(__VA_ARGS__)) |
|
#define | _HNET_EVAL64(...) _HNET_EVAL32(_HNET_EVAL32(__VA_ARGS__)) |
|
#define | _HNET_EVAL32(...) _HNET_EVAL16(_HNET_EVAL16(__VA_ARGS__)) |
|
#define | _HNET_EVAL16(...) _HNET_EVAL8(_HNET_EVAL8(__VA_ARGS__)) |
|
#define | _HNET_EVAL8(...) _HNET_EVAL4(_HNET_EVAL4(__VA_ARGS__)) |
|
#define | _HNET_EVAL4(...) _HNET_EVAL2(_HNET_EVAL2(__VA_ARGS__)) |
|
#define | _HNET_EVAL2(...) _HNET_EVAL1(_HNET_EVAL1(__VA_ARGS__)) |
|
#define | _HNET_EVAL1(...) __VA_ARGS__ |
|
#define | _HNET_DEFER2(m) m _HNET_EMPTY _HNET_EMPTY()() |
|
#define | _HNET_HAS_PARGS(...) _HNET_BOOL(_HNET_FIRST(_HNET__EOAP_ __VA_ARGS__)()) |
|
#define | _HNET__EOAP_(...) _HNET_BOOL(_HNET_FIRST(_HNET__EOA_ __VA_ARGS__)()) |
|
#define | _HNET__EOA_() 0 |
|
#define | _HNET_MAP(f, VS...) _HNET_EVAL(_HNET_MAPP(f, VS)) |
|
#define | _HNET_MAPP(f, H, T...) |
|
#define | _HNET__MAPP() _HNET_MAPP |
|
#define | _HNET_TYCTOR_PRIM ((int)0) |
|
#define | _HNET_TYCTOR_TVAR ((int)2) |
|
#define | _HNET_TYCTOR_FIXEDARR ((int)4) |
|
#define | _HNET_TYCTOR_ARR ((int)5) |
|
#define | _HNET_TYCTOR_VARIANT ((int)6) |
|
#define | _HNET_TYCTOR_STRUCT ((int)7) |
|
#define | _HNET_TYCTOR_SIZE ((int)11) |
|
#define | _HNET_TYCTOR_RECURSIVE ((int)13) |
|
#define | _HNET_DEFINE_PRIMTYS(T, n) |
|
#define | HNET_ENUM_CTOR_DEF(n) n , |
|
#define | HNET_ENUM_CTOR_CTOR(n) static const SelfT n() { return SelfT(SelfT::Enum::n); } |
|
#define | HNET_ENUM_CTORC_SUCC(n) +1 |
|
#define | HNET_ENUM_CTOR_STR(n) + "|" #n |
|
#define | HNET_ENUM_CTOR_ENCODE(n) |
|
#define | HNET_ENUM_TOSTR_CASE(n) case SelfT :: Enum :: n: o << "|" #n "|"; break; |
|
#define | DEFINE_HNET_ENUM(T, CTORS...) |
|
#define | DEFINE_HNET_VARIANT_GEN(T, VDECL, VCTORS, VCOPY, VDESTROY, CTORCOUNT, VENCODE, VDESC, VWRITE, VREAD, VVISITCASE, VEQCASE, CTAGS, CDATA, CAIOSTATES, CAIOSTATEINIT, CAIOREAD) |
|
#define | HNET_VARIANT_CTOR(n, t) static SelfT n(const t & x) { SelfT r; r.tag = Enum::tag_##n; new (r.data) t(x); return r; } |
|
#define | HNET_VARIANT_CTOR_STR(n, t) + "," #n ":" + ::hobbes::net::io< t >::describe() |
|
#define | HNET_VARIANT_CTOR_TAG(n, t) tag_##n, |
|
#define | HNET_VARIANT_WRITE_CASE(n, t) case Enum::tag_##n: ::hobbes::net::io<int>::write(s, (int)this->tag); ::hobbes::net::io< t >::write(s, this->n##_data); break; |
|
#define | HNET_VARIANT_READ_CASE(n, t) case Enum::tag_##n: new (this->data) t(); ::hobbes::net::io< t >::read(s, &this->n##_data); break; |
|
#define | HNET_VARIANT_PCOPY(n, t) case Enum::tag_##n: new (this->data) t(rhs.n##_data); break; |
|
#define | HNET_VARIANT_PDESTROY(n, t) case Enum::tag_##n: { typedef t __DT; ((__DT*)&this->n##_data)->~__DT(); } break; |
|
#define | HNET_VARIANT_SUCC(n, t) +1 |
|
#define | HNET_VARIANT_CTOR_OPAQUEDATA(n, t) t n##_data; |
|
#define | HNET_VARIANT_CTOR_ENCODE(n, t) |
|
#define | HNET_VARIANT_VDECL(n, t) virtual R n(const t & x) const = 0; |
|
#define | HNET_VARIANT_VCASE(n, t) case Enum::tag_##n: return v.n (this->n##_data); |
|
#define | HNET_VARIANT_EQCASE(n, t) case Enum::tag_##n: return (this->n##_data == rhs.n##_data); |
|
#define | HNET_VARIANT_AIOSTATE_DATA(n, t) ::hobbes::net::io<t>::async_read_state n##_aioS; |
|
#define | HNET_VARIANT_AIOSTATE_INIT(n, t) case Enum::tag_##n: { new (o->payloadS.data) ::hobbes::net::io<t>::async_read_state(); ::hobbes::net::io<t>::prepare(&o->payloadS.n##_aioS); new (x->data) t(); } break; |
|
#define | HNET_VARIANT_AIOSTATE_ACCUM(n, t) case Enum::tag_##n: return ::hobbes::net::io<t>::accum(s, &o->payloadS.n##_aioS, &x->n##_data); |
|
#define | DEFINE_HNET_VARIANT(T, CTORS...) DEFINE_HNET_VARIANT_GEN(T, _HNET_MAP(HNET_VARIANT_VDECL, CTORS), _HNET_MAP(HNET_VARIANT_CTOR, CTORS), _HNET_MAP(HNET_VARIANT_PCOPY, CTORS), _HNET_MAP(HNET_VARIANT_PDESTROY, CTORS), _HNET_MAP(HNET_VARIANT_SUCC, CTORS), _HNET_MAP(HNET_VARIANT_CTOR_ENCODE, CTORS), _HNET_MAP(HNET_VARIANT_CTOR_STR, CTORS), _HNET_MAP(HNET_VARIANT_WRITE_CASE, CTORS), _HNET_MAP(HNET_VARIANT_READ_CASE, CTORS), _HNET_MAP(HNET_VARIANT_VCASE, CTORS), _HNET_MAP(HNET_VARIANT_EQCASE, CTORS), _HNET_MAP(HNET_VARIANT_CTOR_TAG, CTORS), _HNET_MAP(HNET_VARIANT_CTOR_OPAQUEDATA, CTORS), _HNET_MAP(HNET_VARIANT_AIOSTATE_DATA, CTORS), _HNET_MAP(HNET_VARIANT_AIOSTATE_INIT, CTORS), _HNET_MAP(HNET_VARIANT_AIOSTATE_ACCUM, CTORS)) |
|
#define | HNET_VARIANT_LBL_CTOR(n, lbl, t) static SelfT n(const t & x) { SelfT r; r.tag = Enum::tag_##n; new (r.data) t(x); return r; } |
|
#define | HNET_VARIANT_LBL_CTOR_STR(n, lbl, t) + "," #n ":" + ::hobbes::net::io< t >::describe() |
|
#define | HNET_VARIANT_LBL_CTOR_TAG(n, lbl, t) tag_##n, |
|
#define | HNET_VARIANT_LBL_WRITE_CASE(n, lbl, t) case Enum::tag_##n: ::hobbes::net::io<int>::write(s, (int)this->tag); ::hobbes::net::io< t >::write(s, this->n##_data); break; |
|
#define | HNET_VARIANT_LBL_READ_CASE(n, lbl, t) case Enum::tag_##n: new (this->data) t(); ::hobbes::net::io< t >::read(s, &this->n##_data); break; |
|
#define | HNET_VARIANT_LBL_PCOPY(n, lbl, t) case Enum::tag_##n: new (this->data) t(rhs.n##_data); break; |
|
#define | HNET_VARIANT_LBL_PDESTROY(n, lbl, t) case Enum::tag_##n: { typedef t __DT; ((__DT*)&this->n##_data)->~__DT(); } break; |
|
#define | HNET_VARIANT_LBL_SUCC(n, lbl, t) +1 |
|
#define | HNET_VARIANT_LBL_CTOR_OPAQUEDATA(n, lbl, t) t n##_data; |
|
#define | HNET_VARIANT_LBL_CTOR_ENCODE(n, lbl, t) |
|
#define | HNET_VARIANT_LBL_VDECL(n, lbl, t) virtual R n(const t & x) const = 0; |
|
#define | HNET_VARIANT_LBL_VCASE(n, lbl, t) case Enum::tag_##n: return v. n (this->n##_data); |
|
#define | HNET_VARIANT_LBL_EQCASE(n, lbl, t) case Enum::tag_##n: return (this->n##_data == rhs.n##_data); |
|
#define | HNET_VARIANT_LBL_CTOR_AIOSTATE_DATA(n, lbl, t) ::hobbes::net::io<t>::async_read_state n##_aioS; |
|
#define | HNET_VARIANT_LBL_CTOR_AIOSTATE_INIT(n, lbl, t) case Enum::tag_##n: { new (o->payloadS.data) ::hobbes::net::io<t>::async_read_state(); ::hobbes::net::io<t>::prepare(&o->payloadS.n##_aioS); new (x->data) t(); } break; |
|
#define | HNET_VARIANT_LBL_CTOR_AIOSTATE_ACCUM(n, lbl, t) case Enum::tag_##n: return ::hobbes::net::io<t>::accum(s, &o->payloadS.n##_aioS, &x->n##_data); |
|
#define | DEFINE_HNET_VARIANT_WITH_LABELS(T, CTORS...) DEFINE_HNET_VARIANT_GEN(T, _HNET_MAP(HNET_VARIANT_LBL_VDECL, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR, CTORS), _HNET_MAP(HNET_VARIANT_LBL_PCOPY, CTORS), _HNET_MAP(HNET_VARIANT_LBL_PDESTROY, CTORS), _HNET_MAP(HNET_VARIANT_LBL_SUCC, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR_ENCODE, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR_STR, CTORS), _HNET_MAP(HNET_VARIANT_LBL_WRITE_CASE, CTORS), _HNET_MAP(HNET_VARIANT_LBL_READ_CASE, CTORS), _HNET_MAP(HNET_VARIANT_LBL_VCASE, CTORS), _HNET_MAP(HNET_VARIANT_LBL_EQCASE, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR_TAG, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR_OPAQUEDATA, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR_AIOSTATE_DATA, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR_AIOSTATE_INIT, CTORS), _HNET_MAP(HNET_VARIANT_LBL_CTOR_AIOSTATE_ACCUM, CTORS)) |
|
#define | HNET_FIELDC_SUCC(t, n) +1 |
|
#define | HNET_FIELD_COUNT(FIELDS...) (0 _HNET_MAP(HNET_FIELDC_SUCC, FIELDS)) |
|
#define | HNET_FIELDW_SUCC(t, n) ::hobbes::net::io< t >::write(s, this-> n); |
|
#define | HNET_FIELD_WRITES(FIELDS...) _HNET_MAP(HNET_FIELDW_SUCC, FIELDS) |
|
#define | HNET_FIELDR_SUCC(t, n) ::hobbes::net::io< t >::read(s, &this-> n); |
|
#define | HNET_FIELD_READS(FIELDS...) _HNET_MAP(HNET_FIELDR_SUCC, FIELDS) |
|
#define | HNET_STRUCT_FIELD(t, n) t n; |
|
#define | HNET_STRUCT_FIELD_ENC(t, n) ::hobbes::net::ws(#n, out); ::hobbes::net::w((int)-1, out); ::hobbes::net::io< t >::encode(out); |
|
#define | HNET_STRUCT_FIELD_DESC(t, n) + (", " #n " : " + ::hobbes::net::io< t >::describe()) |
|
#define | HNET_FIELD_ASYNC_READ_IDX_DEF(_, n) readAt_##n, |
|
#define | HNET_FIELD_ASYNC_READ_STATE_DEC(t, n) ::hobbes::net::io< t >::async_read_state n; |
|
#define | HNET_FIELD_ASYNC_READ_STATE_INIT(t, n) ::hobbes::net::io< t >::prepare(&o->fieldStates.n); |
|
#define | HNET_FIELD_ASYNC_READ_FIELD(t, n) case FieldIndex::readAt_##n: if (::hobbes::net::io< t >::accum(s, &o->fieldStates.n, &x->n)) { o->idx = (FieldIndex)(((uint32_t)o->idx) + 1); } break; |
|
#define | DEFINE_HNET_STRUCT(T, FIELDS...) |
|
#define | DEFINE_HNET_TYPE_ALIAS(_ATY, _REPTY) |
|
#define | _HNET_CLIENT_MAKE_EXPRID(n, _, __) , exprID_##n |
|
#define | _HNET_CLIENT_MAKE_RPCDEF(n, t, e) result.push_back(::hobbes::net::RPCDef((uint32_t)exprID_##n, e, ::hobbes::net::RPCTyDef<t>::inputType(), ::hobbes::net::RPCTyDef<t>::outputType())); |
|
#define | _HNET_CLIENT_INIT_RPCFUNC(n, t, _) , n(&this->s, (uint32_t)exprID_##n) |
|
#define | _HNET_CLIENT_MAKE_RPCFUNC(n, t, _) ::hobbes::net::RPCFunc<t> n; |
|
#define | DEFINE_NET_CLIENT(T, C...) |
|
#define | _HNET_CLIENT_INIT_ASYNC_RPCFUNC(n, t, _) , n(this, &this->s, (uint32_t)exprID_##n) |
|
#define | _HNET_CLIENT_MAKE_ASYNC_RPCFUNC(n, t, _) ::hobbes::net::AsyncRPCFunc<t> n; |
|
#define | DEFINE_ASYNC_NET_CLIENT(T, C...) |
|
|
void | hobbes::net::sendData (int socket, const uint8_t *d, size_t sz) |
|
void | hobbes::net::sendString (int socket, const std::string &s) |
|
void | hobbes::net::sendBytes (int socket, const bytes &x) |
|
void | hobbes::net::recvData (int socket, uint8_t *d, size_t sz) |
|
void | hobbes::net::recvString (int socket, std::string *x) |
|
void | hobbes::net::setBlockingBit (int socket, bool block) |
|
size_t | hobbes::net::recvDataPartial (int socket, uint8_t *d, size_t sz) |
|
int | hobbes::net::initSession (int s, const RPCDefs &rpcds) |
|
int | hobbes::net::makeConnection (int s, sockaddr *saddr, size_t len) |
|
int | hobbes::net::makeConnection (const hostent &host, int port) |
|
int | hobbes::net::makeConnection (const std::string &host, size_t port) |
|
int | hobbes::net::makeConnection (const std::string &host, const std::string &port) |
|
int | hobbes::net::makeConnection (const std::string &hostport) |
|
template<typename T > |
void | hobbes::net::w (const T &x, bytes *out) |
|
void | hobbes::net::ws (const char *x, bytes *out) |
|
void | hobbes::net::ws (const std::string &x, bytes *out) |
|
void | hobbes::net::ws (const bytes &x, bytes *out) |
|
void | hobbes::net::encode_primty (const char *tn, bytes *out) |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (bool, "bool") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (uint8_t, "byte") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (char, "char") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (int16_t, "short") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (uint16_t, "short") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (int32_t, "int") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (uint32_t, "int") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (int64_t, "long") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (uint64_t, "long") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (float, "float") |
|
| hobbes::net::_HNET_DEFINE_PRIMTYS (double, "double") |
|