| | |
| | | static char *_bus_errlist[_bus_nerr] = { |
| | | "\0", |
| | | "timeout", |
| | | "the other end is not inline" |
| | | "The other end is not inline", |
| | | "Key already in use" |
| | | |
| | | }; |
| | | |
| | |
| | | |
| | | #define EBUS_TIMEOUT 1 |
| | | #define EBUS_CLOSED 2 |
| | | #define EBUS_KEY_INUSED 3 |
| | | |
| | | extern int bus_errno; |
| | | |
| | |
| | | } |
| | | |
| | | ShmModSocket::~ShmModSocket() { |
| | | logger->debug("Destory ShmModSocket...\n"); |
| | | // logger->debug("Close ShmModSocket...\n"); |
| | | struct timespec timeout = {1, 0}; |
| | | if(bus_set != NULL) { |
| | | for(auto bus_iter = bus_set->begin(); bus_iter != bus_set->end(); bus_iter++) { |
| | |
| | | } |
| | | |
| | | shm_close_socket(shm_socket); |
| | | // printf("ShmModSocket destory 4\n"); |
| | | } |
| | | |
| | | int ShmModSocket::bind(int key) { |
| | |
| | | static inline int _shm_socket_check_key(shm_socket_t *socket) { |
| | | void *tmp_ptr = mm_get_by_key(socket->key); |
| | | if (tmp_ptr!= NULL && tmp_ptr != (void *)1 && !socket->force_bind ) { |
| | | logger->error("key %d has already been in used!", socket->key); |
| | | bus_errno = EBUS_KEY_INUSED; |
| | | logger->error("%s. key = %d ", bus_strerror(bus_errno), socket->key); |
| | | return 0; |
| | | } |
| | | return 1; |
| | |
| | | } else { |
| | | |
| | | if(!_shm_socket_check_key(socket)) { |
| | | return -1; |
| | | bus_errno = EBUS_KEY_INUSED; |
| | | return EBUS_KEY_INUSED; |
| | | } |
| | | } |
| | | |
| | |
| | | socket->key = hashtable_alloc_key(hashtable); |
| | | } else { |
| | | if(!_shm_socket_check_key(socket)) { |
| | | return -1; |
| | | bus_errno = EBUS_KEY_INUSED; |
| | | return EBUS_KEY_INUSED; |
| | | } |
| | | } |
| | | |
| | |
| | | } else { |
| | | |
| | | if(!_shm_socket_check_key(socket)) { |
| | | return -1; |
| | | bus_errno = EBUS_KEY_INUSED; |
| | | return EBUS_KEY_INUSED; |
| | | } |
| | | |
| | | } |
| | |
| | | } else { |
| | | |
| | | if(!_shm_socket_check_key(socket)) { |
| | | return -1; |
| | | bus_errno = EBUS_KEY_INUSED; |
| | | return EBUS_KEY_INUSED; |
| | | } |
| | | } |
| | | |
| | |
| | | sprintf(sendbuf, "RECEIVED PORT %d NAME %s", remote_port, recvbuf); |
| | | net_mod_socket_sendto(client, sendbuf, strlen(sendbuf) + 1, remote_port); |
| | | free(recvbuf); |
| | | sleep(1000); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | void test_net_sendandrecv_threads(char *nodelist) { |
| | | |
| | | int status, i = 0, processors = 4; |
| | | int status, i = 0, processors = 1; |
| | | void *res[processors]; |
| | | // Targ *targs = (Targ *)calloc(processors, sizeof(Targ)); |
| | | Targ targs[processors]; |