2 #include <ff/net/common/archive.h>
3 #include <ff/net/middleware/ntpackage.h>
9 template <
typename PackageType,
typename... ARGS,
typename... PARGS>
10 static BytesType for_package(PARGS... params) {
12 p.template set<ARGS...>(params...);
13 ff::net::marshaler lm(ff::net::marshaler::length_retriver);
16 BytesType ret(lm.get_length());
17 ff::net::marshaler ld((
char *)ret.data(), ret.size(),
18 ff::net::marshaler::serializer);
23 template <
typename ByteType,
typename PackageType>
24 static void for_package(ByteType *data, uint32_t data_size,
26 ff::net::marshaler lm(ff::net::marshaler::length_retriver);
29 BytesType ret(lm.get_length());
30 ff::net::marshaler ld((
char *)data, data_size,
31 ff::net::marshaler::serializer);
34 template <
typename PackageType>
35 static BytesType for_package(
const PackageType &_pkg) {
36 auto &pkg = (PackageType &)_pkg;
37 ff::net::marshaler lm(ff::net::marshaler::length_retriver);
40 BytesType ret(lm.get_length());
41 ff::net::marshaler ld((
char *)ret.data(), ret.size(),
42 ff::net::marshaler::serializer);
49 template <
typename BytesType>
50 static PackageType from_bytes(
const BytesType &data) {
52 ::ff::net::marshaler ar((
char *)data.data(), data.size(),
53 ::ff::net::marshaler::deserializer);
57 template <
typename ByteType>
58 static PackageType from_bytes(
const ByteType *data, uint32_t data_size) {
60 ::ff::net::marshaler ar((
char *)data, data_size,
61 ::ff::net::marshaler::deserializer);
68 template <uint32_t PackageID,
typename... ARGS>
70 using type = ::ff::net::ntpackage<PackageID, ARGS...>;
73 template <uint32_t PackageID,
typename... ARGS>
76 using type = ::ff::net::ntpackage<PackageID, ARGS...>;
80 template <uint32_t PackageID,
typename... ARGS>
82 using type = ::ff::util::ntobject<ARGS...>;
84 template <
typename... ARGS>
86 using type = ::ff::util::ntobject<ARGS...>;
93 template <
typename... ARGS>
struct archive_helper<ff::util::ntobject<ARGS...>> {
95 using data_t = ff::util::ntobject<ARGS...>;
96 static uint32_t serialize(
char *buf,
const data_t &d,
size_t len) {
98 marshaler m(buf, len, marshaler::serializer);
100 return m.get_length();
102 static uint32_t deserialize(
const char *buf, data_t &d,
size_t len) {
104 marshaler m(buf, len, marshaler::deserializer);
107 return m.get_length();
109 static uint32_t length(
const data_t &d) {
111 marshaler m(marshaler::length_retriver);
113 return m.get_length();