| | |
| | | memcpy(dest.buf, buf, size); |
| | | |
| | | |
| | | if(flags & SHM_MSG_NOWAIT != 0) { |
| | | if( (flags & BUS_NOWAIT_FLAG) == BUS_NOWAIT_FLAG) { |
| | | rv = remoteQueue->push_nowait(dest); |
| | | } else if(timeout != NULL) { |
| | | } else if((flags & BUS_TIMEOUT_FLAG) == BUS_TIMEOUT_FLAG && timeout != NULL) { |
| | | rv = remoteQueue->push_timeout(dest, timeout); |
| | | } else { |
| | | rv = remoteQueue->push(dest); |
| | |
| | | logger->error(rv, "sendto key %d failed", key); |
| | | } |
| | | return rv; |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | shm_msg_t src; |
| | | |
| | | if(flags & SHM_MSG_NOWAIT != 0) { |
| | | if((flags & BUS_NOWAIT_FLAG) == BUS_NOWAIT_FLAG) { |
| | | rv = socket->queue->pop_nowait(src); |
| | | } else if(timeout != NULL) { |
| | | } else if((flags & BUS_TIMEOUT_FLAG) == BUS_TIMEOUT_FLAG && timeout != NULL) { |
| | | rv = socket->queue->pop_timeout(src, timeout); |
| | | // printf("0 shm_recvfrom====%d\n", rv); |
| | | } else { |
| | |
| | | |
| | | switch (src.type) { |
| | | case SHM_SOCKET_OPEN: |
| | | socket->acceptQueue->push_timeout(src, &timeout); |
| | | socket->acceptQueue->push(src, &timeout, BUS_TIMEOUT_FLAG); |
| | | break; |
| | | case SHM_SOCKET_CLOSE: |
| | | _server_close_conn_to_client(socket, src.key); |
| | |
| | | if (iter != socket->clientSocketMap->end()) { |
| | | client_socket = iter->second; |
| | | // print_msg("_server_run_msg_rev push before", src); |
| | | client_socket->messageQueue->push_timeout(src, &timeout); |
| | | client_socket->messageQueue->push(src, &timeout, BUS_TIMEOUT_FLAG); |
| | | // print_msg("_server_run_msg_rev push after", src); |
| | | } |
| | | |
| | |
| | | _client_close_conn_to_server(socket); |
| | | break; |
| | | case SHM_COMMON_MSG: |
| | | socket->messageQueue->push_timeout(src, &timeout); |
| | | socket->messageQueue->push(src, &timeout, BUS_TIMEOUT_FLAG); |
| | | break; |
| | | default: |
| | | logger->error( "shm_socket._client_run_msg_rev: undefined message type."); |