static struct session_s* epoll_session_malloc(struct epollserver_s* epollserver, sock fd) { struct session_s* session = (struct session_s*)malloc(sizeof *session); session->recv_buffer = ox_buffer_new(epollserver->session_recvbuffer_size); session->send_buffer = ox_buffer_new(epollserver->session_sendbuffer_size); ox_socket_nonblock(fd); session->writeable = true; session->haveleftdata = false; session->fd = fd; session->ud = NULL; session->server = epollserver; return session; }
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 connection_s* ox_connection_new(int rdsize, int sdsize, pfn_check_packet check, pfn_packet_handle handle, void* ext) { struct connection_s* ret = (struct connection_s*)malloc(sizeof(*ret)); if(ret != NULL) { ret->fd = SOCKET_ERROR; ret->status = connection_none; ret->fdset = ox_fdset_new(); ret->send_buffer = ox_buffer_new(sdsize); ret->sendmsg_list = ox_rwlist_new(DF_LIST_SIZE, sizeof(struct msg_data_s*), DF_RWLIST_PENDING_NUM); ret->free_sendmsg_list = ox_rwlist_new(DF_LIST_SIZE, sizeof(struct msg_data_s*), DF_RWLIST_PENDING_NUM); ret->recv_buffer = ox_buffer_new(rdsize); ret->netmsg_list = ox_rwlist_new(DF_LIST_SIZE, sizeof(struct msg_data_s*), DF_RWLIST_PENDING_NUM); ret->free_netmsg_list = ox_rwlist_new(DF_LIST_SIZE, sizeof(struct msg_data_s*), DF_RWLIST_PENDING_NUM); ret->proc_list = ox_rwlist_new(PROC_LIST_SIZE, sizeof(struct msg_data_s*), DF_RWLIST_PENDING_NUM); ret->check = check; ret->handle = handle; ret->ext = ext; ret->writable = true; #ifdef CONNECTION_SEND_CHECK ret->current_msg_id = 0; ret->last_send_msg_id = 0; #endif } return ret; }
SSDBProtocolRequest::SSDBProtocolRequest() { m_request = ox_buffer_new(DEFAULT_SSDBPROTOCOL_LEN); }