| | |
| | | #include "usg_common.h" |
| | | #include "shm_socket.h" |
| | | #include "shm_allocator.h" |
| | | #include "mem_pool.h" |
| | | #include "shm_mm.h" |
| | | #include "hashtable.h" |
| | | #include "sem_util.h" |
| | | #include "logger_factory.h" |
| | |
| | | typedef std::set<int, std::less<int>, SHM_STL_Allocator<int> > SHMKeySet; |
| | | typedef std::map<SHMString, SHMKeySet *, std::less<SHMString>, SHM_STL_Allocator<std::pair<const SHMString, SHMKeySet *> > > SHMTopicSubMap; |
| | | |
| | | |
| | | class BusServerSocket { |
| | | private: |
| | | shm_socket_t *shm_socket; |
| | |
| | | SHMTopicSubMap *topic_sub_map; |
| | | |
| | | private: |
| | | int destroy(); |
| | | void _proxy_sub( char *topic, int key); |
| | | void _proxy_pub( char *topic, void *buf, size_t size, int key); |
| | | void *run_pubsub_proxy(); |
| | | void _proxy_pub( char *topic, char *buf, size_t size, int key); |
| | | int _run_proxy_(); |
| | | // int parse_pubsub_topic(char *str, size_t size, char **_action, char **_topic, size_t *head_len ); |
| | | |
| | | |
| | | void _proxy_desub( char *topic, int key); |
| | | void _proxy_desub_all(int key); |
| | | |
| | | static void foreach_subscripters(std::function<void(SHMKeySet *, int)> cb); |
| | | void _proxy_reg(const char *topic, size_t topic_size, const char *content, size_t content_size, int key, int flag); |
| | | |
| | | static void foreach_subscripters(std::function<void(SHMKeySet *, int)> cb); |
| | | // static bool include_in_keys(int key, int keys[], size_t length); |
| | | |
| | | public: |