| | |
| | | } |
| | | |
| | | ShmModSocket::~ShmModSocket() { |
| | | // 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++) { |
| | |
| | | int buf_size; |
| | | char *buf; |
| | | int max_buf_size; |
| | | void *buf_ptr; |
| | | if((buf = (char *) malloc(MAXBUF)) == NULL) { |
| | | LoggerFactory::getLogger()->error(errno, "ShmModSocket::get_bus_sendbuf malloc"); |
| | | exit(1); |
| | |
| | | } |
| | | } |
| | | |
| | | memcpy(buf, ShmModSocket::encode_bus_head(request_head), BUS_HEAD_SIZE); |
| | | buf_ptr = ShmModSocket::encode_bus_head(request_head); |
| | | memcpy(buf, buf_ptr, BUS_HEAD_SIZE); |
| | | if(topic_size != 0 ) |
| | | memcpy(buf + BUS_HEAD_SIZE, topic_buf, topic_size); |
| | | if(content_size != 0) |
| | | memcpy(buf + BUS_HEAD_SIZE + topic_size, content_buf, content_size); |
| | | |
| | | *retbuf = buf; |
| | | free(buf_ptr); |
| | | return buf_size; |
| | | } |
| | | |
| | |
| | | tmp_ptr += sizeof(head.action); |
| | | PUT(tmp_ptr, htonl(head.topic_size)); |
| | | |
| | | tmp_ptr += 4; |
| | | tmp_ptr += sizeof(head.topic_size); |
| | | PUT(tmp_ptr, htonl(head.content_size)); |
| | | |
| | | return headbs; |
| | |
| | | tmp_ptr += sizeof(head.action); |
| | | head.topic_size = ntohl(GET(tmp_ptr)); |
| | | |
| | | tmp_ptr += 4; |
| | | tmp_ptr += sizeof(head.topic_size); |
| | | head.content_size = ntohl(GET(tmp_ptr)); |
| | | |
| | | return head; |