Example #1
0
static void togo_wt_read_cb(struct bufferevent *bev, void *arg)
{
	TOGO_THREAD_ITEM * socket_item = (TOGO_THREAD_ITEM *) arg;

	/* Read the network data from socket */
	enum TOGO_READ_NETWORK read_ret = togo_command_read_network(bev,
			socket_item);

	if (read_ret == READ_DATA_RECEIVED) {

		while (1) {
			if (socket_item->rbytes == 0) {
				break;
			}

			if (socket_item->rstatus == 1) {
				BOOL ret = togo_command_read_big_data(socket_item,
						togo_wt_send_cb);
				if (ret == FALSE) {
					togo_wt_destroy_socket(bev, socket_item);
					break;
				}
				continue;
			}

			if (socket_item->rstatus == 2) {
				BOOL skip_ret = togo_command_read_big_data_skip(socket_item);
				if (skip_ret == FALSE) {
					togo_wt_destroy_socket(bev, socket_item);
					break;
				}
				continue;
			}

			BOOL parse_ret = togo_command_parse_command(socket_item,
					togo_wt_send_cb);

			if (parse_ret == TRUE) {
				if (socket_item->rbytes > 0) {
					continue;
				}
			} else {

				/* If can't parse any command and the read buffer's size
				 * more than TOGO_S_RBUF_MAX_SIZE, we must to close the socket.
				 */
				if (socket_item->rsize >= TOGO_S_RBUF_MAX_SIZE) {
					togo_wt_destroy_socket(bev, socket_item);
				}
			}
			break;
		}

	}
}
Example #2
0
void togo_server_disconnect(TOGO_THREAD_ITEM * socket_item)
{
	if (socket_item != NULL && socket_item->bev != NULL) {
		togo_wt_destroy_socket(socket_item->bev, socket_item);
	}

}
Example #3
0
static void togo_wt_event_cb(struct bufferevent *bev, short event, void *arg)
{
	TOGO_THREAD_ITEM * socket_item = (TOGO_THREAD_ITEM *) arg;
	if (event & (BEV_EVENT_EOF | BEV_EVENT_ERROR)) {
		togo_wt_destroy_socket(bev, socket_item);
	}

}
Example #4
0
static void togo_wt_event_cb(struct bufferevent *bev, short event, void *arg)
{
	TOGO_THREAD_ITEM * socket_item = (TOGO_THREAD_ITEM *) arg;
	togo_wt_destroy_socket(bev, socket_item);
}