118 ImMessage(dht::Value::Id
id, std::string&& m,
long d = 0)
119 : id(
id), msg(std::move(m)), date(d) {}
120 ImMessage(dht::Value::Id
id, std::string &&dt, std::string &&m,
long d = 0)
121 : id(
id), msg(std::move(m)), datatype(std::move(dt)), date(d) {}
122 ImMessage(dht::Value::Id
id, std::string &&dt, std::string &&m, std::map<std::string, std::string> &&md,
long d = 0)
123 : id(
id), msg(std::move(m)), datatype(std::move(dt)), metadatas(std::move(md)), date(d) {}
125 virtual void unpackValue(
const Value& v)
override {
127 SignedValue::unpackValue(v);
131 dht::Value::Id
id {0};
133 std::string datatype;
134 std::map<std::string, std::string> metadatas;
136 ImStatus status {ImStatus::NONE};
138 MSGPACK_DEFINE_MAP(
id, msg, date, status, datatype, metadatas)
150 TrustRequest(std::string s, std::string ci = {}) : service(s), conversationId(ci) {}
151 TrustRequest(std::string s, std::string ci,
const Blob& d) : service(s), conversationId(ci), payload(d) {}
154 return EncryptedValue::getFilter();
158 std::string conversationId;
160 bool confirm {
false};
161 MSGPACK_DEFINE_MAP(service, conversationId, payload, confirm)
176 return EncryptedValue::getFilter();
179 template <
typename Packer>
180 void msgpack_pack(Packer& pk)
const
185 pk.pack_bin(ice_data.size());
186 pk.pack_bin_body((
const char*)ice_data.data(), ice_data.size());
190 pk.pack_array(ice_data.size());
191 for (uint8_t b : ice_data)
196 virtual void msgpack_unpack(
const msgpack::object& o)
198 if (o.type != msgpack::type::ARRAY)
throw msgpack::type_error();
199 if (o.via.array.size < 2)
throw msgpack::type_error();
200 id = o.via.array.ptr[0].as<Value::Id>();
219 addr.setFamily(family);
226 msgpack_unpack(unpackMsg(b).get());
229 template <
typename Packer>
230 void msgpack_pack(Packer& pk)
const
232 pk.pack_bin(addr.getLength());
233 pk.pack_bin_body((
const char*)addr.get(), addr.getLength());
236 virtual void msgpack_unpack(
const msgpack::object& o)
238 if (o.type == msgpack::type::BIN)
239 addr = {(sockaddr*)o.via.bin.ptr, (socklen_t)o.via.bin.size};
241 throw msgpack::type_error();
244 in_port_t getPort()
const {
245 return addr.getPort();
247 void setPort(in_port_t p) {
251 const SockAddr& getPeerAddr()
const {
255 virtual const ValueType& getType()
const {