Пример #1
0
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;
}
Пример #2
0
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);
}
Пример #3
0
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;
}
Пример #4
0
SSDBProtocolRequest::SSDBProtocolRequest()
{
    m_request = ox_buffer_new(DEFAULT_SSDBPROTOCOL_LEN);
}