Skip to content

Commit 45714b6

Browse files
committed
srv.cpp
1 parent 74321d6 commit 45714b6

1 file changed

Lines changed: 45 additions & 12 deletions

File tree

section5/srv.cpp

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,70 @@
1616
USING_NAMESPACE(std);
1717
USING_NAMESPACE(cpp_study);
1818

19+
static
20+
auto debug_print = [](auto& b)
21+
{
22+
using json_t = nlohmann::json;
23+
24+
json_t j;
25+
26+
j["id"] = b.id();
27+
j["sold"] = b.sold();
28+
j["revenue"] = b.revenue();
29+
//j["average"] = b.average();
30+
31+
std::cout << j.dump(2) << std::endl;
32+
};
33+
1934
int main()
2035
{
2136
cout << "hello cpp_study server" << endl;
2237

2338
Summary sum;
39+
std::atomic_int count {0};
2440

2541
auto cycle = [&](const auto& addr)
2642
{
2743
using zmq_ctx = ZmqContext<1>;
2844

45+
// zmq recv
46+
2947
auto sock = zmq_ctx::recv_sock();
3048

3149
sock.bind(addr);
3250
assert(sock.connected());
3351

34-
auto msg_ptr = std::make_shared<zmq_message_type>();
52+
for(;;) {
53+
54+
// shared_ptr/unique_ptr
55+
auto msg_ptr = std::make_shared<zmq_message_type>();
56+
57+
sock.recv(msg_ptr.get());
58+
//cout << msg_ptr->size() << endl;
59+
60+
// async process msg
61+
62+
std::async(std::launch::async,
63+
[&sum, &count](decltype(msg_ptr) ptr)
64+
{
65+
//cout << ptr.unique() << endl;
66+
67+
SalesData book;
3568

36-
sock.recv(msg_ptr.get());
37-
cout << msg_ptr->size() << endl;
69+
auto obj = msgpack::unpack(
70+
ptr->data<char>(), ptr->size()).get();
71+
obj.convert(book);
3872

39-
std::async(
40-
[&sum, msg_ptr]()
41-
{
42-
SalesData data;
73+
//cout << book.id() << endl;
74+
//debug_print(book);
4375

44-
auto obj = msgpack::unpack(
45-
msg_ptr->data<char>(), msg_ptr->size()).get();
46-
obj.convert(data);
76+
sum.add_sales(book);
4777

48-
sum.add_sales(data);
49-
});
78+
++count;
79+
cout << count << endl;
80+
},
81+
msg_ptr);
82+
}
5083
};
5184

5285
auto fu = std::async(cycle, "tcp://127.0.0.1:5555");

0 commit comments

Comments
 (0)