载入中...
搜索中...
未找到
NetRpc.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include "network/UdpLink.h"
6
7#include <simplesquirrel/object.hpp>
8
9#include <cstdint>
10#include <functional>
11#include <map>
12#include <string>
13
14namespace eve::network {
15
16class NetReader;
17
27public:
29 explicit NetRpc(UdpLink* link);
31 ~NetRpc();
32
33 using Handler = std::function<void(NetReader&)>;
34
36 void call(uint16_t msgId, const void* data, size_t n, bool reliable = true);
38 bool callString(uint16_t msgId, const std::string& payload, bool reliable = true);
39
41 void registerHandler(uint16_t msgId, Handler h);
44 void registerScript(uint16_t msgId, ssq::Object fn);
45
46private:
47 void onLinkMessage(UdpLink::MsgType type, uint8_t channel,
48 const char* data, size_t n);
49
50 UdpLink* link_ = nullptr;
51 std::map<uint16_t, Handler> handlers_;
52 std::map<uint16_t, ssq::Object> scriptHandlers_;
53};
54
55} // namespace eve::network
Value::Object payload
#define EVENGINE_API_PLATFORM
Definition Export.h:107
glm::vec3 n
Definition Grass.cpp:63
int h
EVENGINE_API_PLATFORM public API.
Definition NetStream.h:71
EVENGINE_API_PLATFORM public API.
Definition NetRpc.h:26
std::function< void(NetReader &)> Handler
Definition NetRpc.h:33
SettlementPipeline::Stage fn