Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. buffered_readers[new_socket_fd].reset([new_socket_fd, client_addr,
  2.                                                            &subscriber_manager, &topic_manager, &buffered_readers]
  3.                                                           (const tcp_message_t& tcp_message)
  4.                     {
  5.                         switch(tcp_message.mtype)
  6.                         {
  7.                         case identity:
  8.                         {
  9.                             std::string client_id = tcp_message.topic;
  10.  
  11.                             subscriber_manager.add_subscriber(new_socket_fd, client_addr, client_id);
  12.                             topic_manager.send_missed_messages(client_id);
  13.  
  14.                             udp_message_t umsg = {};
  15.                             strcpy(umsg.topic_name, "welcome");
  16.                             strcpy(umsg.message, "hello world!");
  17.                             umsg.type = type_string;
  18.  
  19.                             message_t welcome_msg(client_addr, umsg);
  20.                             tcp_message_t tmp = welcome_msg.to_tcp_message(publish);
  21.                             send(new_socket_fd, &tmp, tmp.len, 0);
  22.  
  23.                             buffered_readers[new_socket_fd].reset([client_id, &subscriber_manager, &topic_manager]
  24.                                                                   (const tcp_message_t& tcp_message)
  25.                             {
  26.                                 switch(tcp_message.mtype)
  27.                                 {
  28.                                 case subscribe:
  29.                                 {
  30.                                     topic_manager.subscribe(client_id, tcp_message.topic, tcp_message.sf);
  31.                                     printf("Client %s has subscribed to topic %s with s&f %d\n",
  32.                                            client_id.c_str(), tcp_message.topic, tcp_message.sf);
  33.  
  34.                                     break;
  35.                                 }
  36.                                 case unsubscribe:
  37.                                 {
  38.                                     topic_manager.unsubscribe(client_id, tcp_message.topic);
  39.                                     printf("Client %s has unsubscribed from topic %s\n",
  40.                                            client_id.c_str(), tcp_message.topic);
  41.                                     break;
  42.                                 }
  43.                                 default:
  44.                                 {
  45.                                     break;
  46.                                 }
  47.                                 }
  48.                             });
  49.  
  50.                             break;
  51.                         }
  52.                         default:
  53.                         {
  54.                             break;
  55.                         }
  56.                         }
  57.                     });
  58.                 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement