blob: b0b2c89dac822c2ed695b2852bd71ef7d92901b5 (
plain)
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
|
#include "../c++/transfer.hpp"
#include <forstio/codec/simple.hpp>
#include <iostream>
namespace sch {
using namespace saw::schema;
using Foo = Struct<
Member<String, "a">,
Member<Int64, "b">
>;
}
int main(){
using namespace saw;
remote<rmt::File> file_remote;
auto eo_addr = file_remote.parse_address("./example_file");
if(eo_addr.is_error()){
return 1;
}
auto& addr = eo_addr.get_value();
auto eo_dat_srv = file_remote.template data_listen<sch::Foo,encode::KelSimple>({*addr});
if(eo_dat_srv.is_error()){
return 2;
}
auto& dat_srv = eo_dat_srv.get_value();
std::string a = "blafoobla";
int64_t b = 42;
{
id<sch::Foo> foo_id{0u};
auto eo_recv = dat_srv->receive(foo_id);
if(eo_recv.is_error()){
auto& err = eo_recv.get_error();
std::cerr<<"Error: "<<err.get_category()<<" - "<<err.get_message()<<std::endl;
return 4;
}
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);
if(eov.is_error()){
return 3;
}
std::cout<<"a: ";
for(uint64_t i = 0; i < nat_foo.template get<"a">().size();++i) std::cout<<nat_foo.template get<"a">().at(i);
std::cout<<"\nb: "<<nat_foo.template get<"b">().get()<<std::endl;
}
return 0;
}
|