| | |
| | | } |
| | | |
| | | ShmModSocket::ShmModSocket() { |
| | | mod = (socket_mod_t)0; |
| | | shm_socket = shm_open_socket(SHM_SOCKET_DGRAM); |
| | | bus_set = new std::set<int>; |
| | | } |
| | |
| | | int ShmModSocket::sendto_nowait( const void *buf, const int size, const int key){ |
| | | return shm_sendto(shm_socket, buf, size, key, NULL, (int)SHM_MSG_NOWAIT); |
| | | } |
| | | |
| | | |
| | | inline int ShmModSocket::_recvfrom_(void **buf, int *size, int *key, struct timespec *timeout, int flags) { |
| | | |
| | | if(mod == BUS) { |
| | | logger->error("Can not use method recvfrom in a Bus"); |
| | | exit(1); |
| | | } |
| | | // printf("dgram_mod_recvfrom before\n"); |
| | | int rv = shm_recvfrom(shm_socket, buf, size, key, timeout, flags); |
| | | // printf("dgram_mod_recvfrom after\n"); |
| | | |
| | | return rv; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 接收信息 |
| | |
| | | * @return 0 成功, 其他值 失败的错误码 |
| | | */ |
| | | int ShmModSocket::recvfrom(void **buf, int *size, int *key) { |
| | | int rv = _recvfrom_( buf, size, key, NULL, 0); |
| | | // logger->error(rv, "ShmModSocket::recvfrom failed!"); |
| | | int rv = shm_recvfrom(shm_socket, buf, size, key, NULL, 0); |
| | | |
| | | return rv; |
| | | } |
| | | |
| | | |
| | | // 接受信息超时返回。 @sec 秒 , @nsec 纳秒 |
| | | int ShmModSocket::recvfrom_timeout( void **buf, int *size, int *key, struct timespec *timeout) { |
| | | int rv = _recvfrom_(buf, size, key, timeout, 0); |
| | | int rv = shm_recvfrom(shm_socket, buf, size, key, timeout, 0); |
| | | return rv; |
| | | } |
| | | |
| | | int ShmModSocket::recvfrom_nowait( void **buf, int *size, int *key){ |
| | | int rv = _recvfrom_(buf, size, key, NULL, (int)SHM_MSG_NOWAIT); |
| | | int rv = shm_recvfrom(shm_socket, buf, size, key, NULL, (int)SHM_MSG_NOWAIT); |
| | | // logger->error(rv, "ShmModSocket::recvfrom_nowait failed!"); |
| | | return rv; |
| | | } |