| | |
| | | #include "dgram_mod_socket.h" |
| | | #include "shm_mm.h" |
| | | #include "usg_common.h" |
| | | #include "mm.h" |
| | | |
| | | void server(int port) { |
| | | void *socket = dgram_mod_open_socket(); |
| | | dgram_mod_bind(socket, port); |
| | | |
| | | |
| | | void server(int port, bool restart) { |
| | | void * server_socket = dgram_mod_open_socket(); |
| | | |
| | | if(restart) { |
| | | dgram_mod_force_bind(server_socket, port); |
| | | } else { |
| | | dgram_mod_bind(server_socket, port); |
| | | } |
| | | |
| | | |
| | | dgram_mod_start_bus(socket); |
| | | |
| | | dgram_mod_start_bus(server_socket); |
| | | } |
| | | |
| | | |
| | |
| | | shm_init(512); |
| | | int port; |
| | | if (argc < 3) { |
| | | fprintf(stderr, "Usage: reqrep %s|%s <PORT> ...\n", "server", "client"); |
| | | fprintf(stderr, "Usage: %s %s|%s <PORT> ...\n", argv[0], "server", "client"); |
| | | return 1; |
| | | } |
| | | |
| | | port = atoi(argv[2]); |
| | | |
| | | if (strcmp("server", argv[1]) == 0) { |
| | | server(port); |
| | | if(argc >= 4 && strcmp("restart", argv[3]) == 0) { |
| | | server(port, true); |
| | | } |
| | | else{ |
| | | server(port, false); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (strcmp("client", argv[1]) == 0) |
| | |
| | | // T* tptr; |
| | | hashtable_t *hashtable = mm_get_hashtable(); |
| | | ptr = hashtable_get(hashtable, key); |
| | | printf("mem_pool_malloc_by_key malloc before %d, %p\n", key, ptr); |
| | | // printf("mem_pool_malloc_by_key malloc before %d, %p\n", key, ptr); |
| | | if(ptr == NULL || ptr == (void *)1 ) { |
| | | ptr = mm_malloc(sizeof(T)); |
| | | hashtable_put(hashtable, key, ptr); |
| | | new(ptr) T; |
| | | printf("mem_pool_malloc_by_key use new %d, %p\n", key, ptr); |
| | | // printf("mem_pool_malloc_by_key use new %d, %p\n", key, ptr); |
| | | } |
| | | return (T*)ptr; |
| | | } |
| | | |
| | | static inline void mem_pool_free_by_key(int key) { |
| | | void *ptr; |
| | | // T* tptr; |
| | | hashtable_t *hashtable = mm_get_hashtable(); |
| | | ptr = hashtable_get(hashtable, key); |
| | | if(ptr != NULL) { |
| | | mm_free(ptr); |
| | | hashtable_remove(hashtable, key); |
| | | } |
| | | } |
| | | |
| | | static inline void mem_pool_free (void *ptr) { |
| | | mm_free(ptr); |
| | | // notify malloc |
| | |
| | | subscripter_set = map_iter->second; |
| | | delete subscripter_set; |
| | | } |
| | | delete topic_sub_map; |
| | | mem_pool_free_by_key(BUS_MAP_KEY); |
| | | } |
| | | |
| | | |
| | |
| | | #include "shm_mm.h" |
| | | #include "usg_common.h" |
| | | #include "mm.h" |
| | | |
| | | |
| | | |
| | | |
| | | void server(int port, bool restart) { |
| | | void * server_socket = dgram_mod_open_socket(); |