1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#include <forstio/test/suite.hpp>
#include "../c++/transfer.hpp"
#include <forstio/codec/simple.hpp>
namespace {
namespace sch {
using namespace saw::schema;
using Foo = Struct<
Member<String, "a">,
Member<Int64, "b">
>;
}
SAW_TEST("File Remote"){
using namespace saw;
remote<rmt::File> file_remote;
auto eo_addr = file_remote.parse_address("./example_file");
SAW_EOV_EXPECT(eo_addr, "Couldn't parse file");
auto& addr = eo_addr.get_value();
auto eo_dat_srv = file_remote.template data_listen<sch::Foo,encode::KelSimple>({*addr});
SAW_EOV_EXPECT(eo_dat_srv, "Couldn't setup data server.");
auto& dat_srv = eo_dat_srv.get_value();
std::string a = "blafoobla";
int64_t b = 42;
{
data<sch::Foo> nat_foo;
nat_foo.template get<"a">().set(a);
nat_foo.template get<"b">().set(b);
data<sch::Foo, encode::KelSimple> smp_foo;
codec<sch::Foo, encode::KelSimple> smp_cod;
auto eov = smp_cod.encode(nat_foo,smp_foo);
SAW_EOV_EXPECT(eov, "Failed to encode.");
id<sch::Foo> foo_id{0u};
auto eo_send = dat_srv->send(smp_foo, foo_id);
SAW_EOV_EXPECT(eo_send, "Failed to send.");
}
{
id<sch::Foo> foo_id{0u};
auto eo_recv = dat_srv->receive(foo_id);
SAW_EOV_EXPECT(eo_recv, "Failed to receive");
auto& recv = eo_recv.get_value();
data<sch::Foo> nat_foo;
codec<sch::Foo, encode::KelSimple> smp_cod;
auto eov = smp_cod.decode(recv, nat_foo);
SAW_EOV_EXPECT(eov, std::string{"Failed to decode. Buffer has size "} + std::to_string(recv.get_buffer().read_composite_length()));
SAW_EXPECT(nat_foo.template get<"b">().get() == b, "Wrong value.");
}
}
}
|