wangzhengquan
2020-08-06 9b9220321e647b381a999f67cad12345334b2cbe
src/socket/include/dmod_socket.h
@@ -38,6 +38,7 @@
  // pthread_t recv_thread;
  // <主题, 订阅者>
   SHMTopicSubMap *topic_sub_map;
   std::set<int> *bus_set;
private:
   inline int _recvfrom_(void **buf, int *size, int *port,  struct timespec *timeout, int flags);
@@ -48,7 +49,15 @@
   int _sub_( void *topic, int size, int port, struct timespec *timeout, int flags);
   int _pub_( void *topic, int topic_size, void *content, int content_size, int port, struct timespec *timeout, int flags);
   static void  foreach_subscripters(std::function<void(SHMKeySet *, SHMKeySet::iterator)>  cb) ;
   void _proxy_desub( char *topic, int port);
   void _proxy_desub_all(int port);
   int  _desub_( void *topic, int size, int port, struct timespec *timeout, int flags);
   static void foreach_subscripters(std::function<void(SHMKeySet *, SHMKeySet::iterator)>  cb);
   static bool include_in_keys(int key, int keys[], size_t length);
   static size_t remove_subscripters(int keys[], size_t length) ;
public:
   static size_t remove_keys(int keys[], size_t length);
public:
   DModSocket();
   ~DModSocket();
@@ -116,6 +125,16 @@
   int  sub_nowait(void *topic, int size, int port);
    /**
    * 取消订阅指定主题
    * @topic 主题
    * @size 主题长度
    * @port 总线端口
    */
   int desub( void *topic, int size, int port);
   // 超时返回。 @sec 秒 , @nsec 纳秒
   int desub_timeout(void *topic, int size, int port, struct timespec *timeout);
   int desub_nowait(void *topic, int size, int port) ;
   /**
    * 发布主题
@@ -133,6 +152,8 @@
    * 获取soket端口号
    */
   int get_port() ;
};
#endif