static void epollserver_handle_sessionclose(struct epollserver_s* epollserver, struct session_s* session) { if(SOCKET_ERROR != session->fd) { epollserver_halfclose_session(epollserver, session); ox_socket_close(session->fd); session->fd = SOCKET_ERROR; session->status = session_status_none; } if(session->recv_buffer != NULL) { ox_buffer_delete(session->recv_buffer); session->recv_buffer = NULL; } if(session->send_buffer != NULL) { ox_buffer_delete(session->send_buffer); session->send_buffer = NULL; } free(session); }
void ox_connection_delete(struct connection_s* self) { ox_fdset_delete(self->fdset); ox_buffer_delete(self->send_buffer); ox_buffer_delete(self->recv_buffer); ox_rwlist_delete(self->sendmsg_list); ox_rwlist_delete(self->free_sendmsg_list); ox_rwlist_delete(self->netmsg_list); ox_rwlist_delete(self->free_netmsg_list); ox_rwlist_delete(self->proc_list); if(self->fd != SOCKET_ERROR) { ox_socket_close(self->fd); self->fd = SOCKET_ERROR; } free(self); }
void SSDBProtocolRequest::appendBlock(const char* data, size_t len) { if (ox_buffer_getwritevalidcount(m_request) < len) { buffer_s* temp = ox_buffer_new(ox_buffer_getsize(m_request) + len); memcpy(ox_buffer_getwriteptr(temp), ox_buffer_getreadptr(m_request), ox_buffer_getreadvalidcount(m_request)); ox_buffer_addwritepos(temp, ox_buffer_getreadvalidcount(m_request)); ox_buffer_delete(m_request); m_request = temp; } ox_buffer_write(m_request, data, len); }
struct buffer_s* ox_buffer_new(size_t buffer_size) { struct buffer_s* ret = (struct buffer_s*)malloc(sizeof(struct buffer_s)); if(ret != NULL) { if((ret->data = (char*)malloc(sizeof(char)*buffer_size)) != NULL) { ret->data_len = buffer_size; ret->read_pos = 0; ret->write_pos = 0; } else { ox_buffer_delete(ret); ret = NULL; } } return ret; }
SSDBProtocolRequest::~SSDBProtocolRequest() { ox_buffer_delete(m_request); m_request = NULL; }