• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ bufferevent_enable函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中bufferevent_enable函数的典型用法代码示例。如果您正苦于以下问题:C++ bufferevent_enable函数的具体用法?C++ bufferevent_enable怎么用?C++ bufferevent_enable使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了bufferevent_enable函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: listen_cb

static void
listen_cb(struct evconnlistener *listener, evutil_socket_t fd,
    struct sockaddr *sa, int socklen, void *arg)
{
	struct event_base *base = arg;
	struct bufferevent *bev;
	const char s[] = TEST_STR;
	bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE);
	bufferevent_write(bev, s, sizeof(s));
	bufferevent_setcb(bev, NULL, sender_writecb, sender_errorcb, NULL);
	bufferevent_enable(bev, EV_WRITE);
}
开发者ID:kjg,项目名称:libevent,代码行数:12,代码来源:regress_bufferevent.c


示例2: tty_start_tty

void
tty_start_tty(struct tty *tty)
{
    struct termios	 tio;
    int		 mode;

    if (tty->fd == -1)
        return;

    if ((mode = fcntl(tty->fd, F_GETFL)) == -1)
        fatal("fcntl failed");
    if (fcntl(tty->fd, F_SETFL, mode|O_NONBLOCK) == -1)
        fatal("fcntl failed");

    bufferevent_enable(tty->event, EV_READ|EV_WRITE);

    if (tcgetattr(tty->fd, &tty->tio) != 0)
        fatal("tcgetattr failed");
    memcpy(&tio, &tty->tio, sizeof tio);
    tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|IMAXBEL|ISTRIP);
    tio.c_iflag |= IGNBRK;
    tio.c_oflag &= ~(OPOST|ONLCR|OCRNL|ONLRET);
    tio.c_lflag &= ~(IEXTEN|ICANON|ECHO|ECHOE|ECHONL|ECHOCTL|
                     ECHOPRT|ECHOKE|ECHOCTL|ISIG);
    tio.c_cc[VMIN] = 1;
    tio.c_cc[VTIME] = 0;
    if (tcsetattr(tty->fd, TCSANOW, &tio) != 0)
        fatal("tcsetattr failed");
    tcflush(tty->fd, TCIOFLUSH);

    tty_putcode(tty, TTYC_SMCUP);

    tty_putcode(tty, TTYC_SGR0);
    memcpy(&tty->cell, &grid_default_cell, sizeof tty->cell);

    tty_putcode(tty, TTYC_RMKX);
    tty_putcode(tty, TTYC_ENACS);
    tty_putcode(tty, TTYC_CLEAR);

    tty_putcode(tty, TTYC_CNORM);
    if (tty_term_has(tty->term, TTYC_KMOUS))
        tty_puts(tty, "\033[?1000l");

    tty->cx = UINT_MAX;
    tty->cy = UINT_MAX;

    tty->rlower = UINT_MAX;
    tty->rupper = UINT_MAX;

    tty->mode = MODE_CURSOR;

    tty->flags |= TTY_STARTED;
}
开发者ID:jnbek,项目名称:tmux,代码行数:53,代码来源:tty.c


示例3: drained_writecb

static void
drained_writecb(struct bufferevent *bev, void *ctx)
{
	struct bufferevent *partner = ctx;

	/* We were choking the other side until we drained our outbuf a bit.
	 * Now it seems drained. */
	bufferevent_setcb(bev, readcb, NULL, eventcb, partner);
	bufferevent_setwatermark(bev, EV_WRITE, 0, 0);
	if (partner)
		bufferevent_enable(partner, EV_READ);
}
开发者ID:sambuc,项目名称:netbsd,代码行数:12,代码来源:le-proxy.c


示例4: on_accept

void on_accept(int fd,short,void* arg){
	struct event_base* base = reinterpret_cast<struct event_base*>(arg);
	struct sockaddr_in peer_addr;
	memset(&peer_addr,0,sizeof(peer_addr));
	socklen_t len=0;
	int clientfd = accept(fd,(struct sockaddr*)&peer_addr,&len);
	evutil_make_socket_nonblocking(clientfd);
	auto bv = bufferevent_socket_new(base,clientfd,BEV_OPT_CLOSE_ON_FREE);
	bufferevent_setcb(bv,readcb,writecb,eventcb,base);
	bufferevent_enable(bv,EV_READ );
	
}
开发者ID:YukWu,项目名称:libevent_example,代码行数:12,代码来源:echo.cpp


示例5: chldreadcb

void
chldreadcb(struct bufferevent *b, void *arg)
{
	char *line, *sp, *ap;
	int n, i, total, nprocs = *(int *)arg;

	if((line=evbuffer_readline(b->input)) != nil){
		sp = line;

		if((ap = strsep(&sp, "\t")) == nil)
			panic("report error\n");
		n = atoi(ap);
		if(n - nreport > NBUFFER)
			panic("a process fell too far behind\n");

		n %= NBUFFER;

		for(i=0; i<params.nbuckets + 3 && (ap=strsep(&sp, "\t")) != nil; i++)
			reportbuf[n][i] += atoi(ap);

		if(++nreportbuf[n] >= nprocs){
			/* Timestamp it.  */
			printf("%d\t",(int)time(nil));
			for(i = 0; i < params.nbuckets + 3; i++)
				printf("%d\t", reportbuf[n][i]);

			/* Compute the total rate of succesful requests. */
			total = 0;
			for(i=3; i<params.nbuckets+1; i++)
				total += reportbuf[n][i];

			printf("%d\n", mkrate(&lastreporttv, total));

			/* Aggregate. */
			counts.errors += reportbuf[n][0];
			counts.timeouts += reportbuf[n][1];
			counts.closes += reportbuf[n][2];
			for(i=0; i<params.nbuckets; i++){
				counts.successes += reportbuf[n][i + 3];
				counts.counters[i] += reportbuf[n][i + 3];
			}

			/* Clear it. Advance nreport. */
			memset(reportbuf[n], 0,(params.nbuckets + 3) * sizeof(int));
			nreportbuf[n] = 0;
			nreport++;
		}

		free(line);
	}

	bufferevent_enable(b, EV_READ);
}
开发者ID:nchazin,项目名称:hummingbird,代码行数:53,代码来源:hstress.c


示例6: accept_conn_cb

static void accept_conn_cb(struct evconnlistener *listener,
    evutil_socket_t fd, struct sockaddr *address, int socklen,
    void *ctx)
{
        /* We got a new connection! Set up a bufferevent for it. */
        struct event_base *base = evconnlistener_get_base(listener);
        struct bufferevent *bev = bufferevent_socket_new(
                base, fd, BEV_OPT_CLOSE_ON_FREE);
 
        bufferevent_setcb(bev, echo_read_cb, NULL, echo_event_cb, NULL);
        bufferevent_enable(bev, EV_READ|EV_WRITE);
}
开发者ID:RaoHai,项目名称:chinese_full_text_search,代码行数:12,代码来源:key_value_tcp.c


示例7: network_listen_callback

static void
network_listen_callback(int listen_fd, short events, void *arg)
{
    int fd = KSOCK_svr_accept(listen_fd);
    struct bufferevent *bufev;

    printf("fd %d conn...\n", fd);

    bufev = bufferevent_new(fd, network_read_callback,
                            NULL, network_error_callback, (void *)fd);
    bufferevent_enable(bufev, EV_READ);
}
开发者ID:kasicass,项目名称:kircd,代码行数:12,代码来源:network.c


示例8: accept_conn_callback

static void accept_conn_callback(
    struct evconnlistener *listener,
    evutil_socket_t fd,
    struct sockaddr *address,
    int socklen,
    void *context)
{
    struct event_base *base = evconnlistener_get_base(listener);    
    struct bufferevent *bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE);
    bufferevent_setcb(bev, echo_read_cb, NULL, echo_event_cb, NULL);
    bufferevent_enable(bev, EV_READ | EV_WRITE);
}
开发者ID:optiklab,项目名称:multithreaded-network-programming-examples,代码行数:12,代码来源:4_libevent_server.c


示例9: bufferevent_socket_new

void BaseServer::listener_callback(struct evconnlistener *listener, int fd, struct sockaddr *sa, int socklen, void *arg)
{
    event_base *base = (event_base*)arg;
    struct bufferevent* bev = bufferevent_socket_new(base,fd,BEV_OPT_CLOSE_ON_FREE);
    assert(bev);
    bufferevent_setwatermark(bev,EV_READ,0,0);
    bufferevent_setwatermark(bev,EV_WRITE,0,0);

    bufferevent_setcb(bev,read_callback,write_callback,NULL,NULL);
    bufferevent_enable(bev,EV_READ);

}
开发者ID:yzqcode,项目名称:WebServer,代码行数:12,代码来源:baseserver.cpp


示例10: red_connect_relay

struct bufferevent* red_connect_relay(struct sockaddr_in *addr, evbuffercb writecb, everrorcb errorcb, void *cbarg)
{
	struct bufferevent *retval = NULL;
	int on = 1;
	int relay_fd = -1;
	int error;

	relay_fd = socket(AF_INET, SOCK_STREAM, 0);
	if (relay_fd == -1) {
		log_errno(LOG_ERR, "socket");
		goto fail;
	}

	error = fcntl_nonblock(relay_fd);
	if (error) {
		log_errno(LOG_ERR, "fcntl");
		goto fail;
	}

	error = setsockopt(relay_fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on));
	if (error) {
		log_errno(LOG_WARNING, "setsockopt");
		goto fail;
	}

	error = connect(relay_fd, (struct sockaddr*)addr, sizeof(*addr));
	if (error && errno != EINPROGRESS) {
		log_errno(LOG_NOTICE, "connect");
		goto fail;
	}

	retval = bufferevent_new(relay_fd, NULL, writecb, errorcb, cbarg);
	if (!retval) {
		log_errno(LOG_ERR, "bufferevent_new");
		goto fail;
	}

	error = bufferevent_enable(retval, EV_WRITE); // we wait for connection...
	if (error) {
		log_errno(LOG_ERR, "bufferevent_enable");
		goto fail;
	}

	return retval;

fail:
	if (relay_fd != -1)
		redsocks_close(relay_fd);
	if (retval)
		bufferevent_free(retval);
	return NULL;
}
开发者ID:antenore,项目名称:redsocks,代码行数:52,代码来源:utils.c


示例11: drone_rampup_timer_cb

static void drone_rampup_timer_cb(evutil_socket_t fd, short what, void *arg) {
    struct job *job = arg;
    Drone__JobRequest *request = job->request;
    struct session *session;
    struct bufferevent *bev;
    struct sockaddr_in echo_sin;
    struct timeval timeout;
    u_int64_t sessions;
    u_int64_t i;

    if (job->client == NULL)
        return;

    if ((request->sessions - job->cur_sessions) > request->rampup_sessions)
        sessions = request->rampup_sessions;
    else
        sessions = request->sessions - job->cur_sessions;

    memset(&echo_sin, 0, sizeof(echo_sin));
    echo_sin.sin_family = AF_INET;
    echo_sin.sin_addr.s_addr = htonl(request->ipv4);
    echo_sin.sin_port = htons(request->port);

    for (i = 0; i < sessions; i++) {
        bev = bufferevent_socket_new(job->client->base, -1,
                BEV_OPT_CLOSE_ON_FREE);

        session = malloc(sizeof(struct session));

        bufferevent_setcb(bev, drone_read_cb, NULL, drone_event_cb, session);
        bufferevent_enable(bev, EV_READ | EV_WRITE);

        timeout.tv_sec = request->timeout;
        timeout.tv_usec = 0;
        bufferevent_set_timeouts(bev, NULL, &timeout);

        if (bufferevent_socket_connect(bev, (struct sockaddr *) &echo_sin,
                sizeof(echo_sin)) < 0) {
            bufferevent_free(bev);
            free(session);
            perror("Error during connection");
            return;
        }

        session->job = job;
        session->bev = bev;
        session->remaining_data = 0;

        job->sessions[job->cur_sessions] = session;
        job->cur_sessions++;
    }
}
开发者ID:safchain,项目名称:ml-stress,代码行数:52,代码来源:drone.c


示例12: newconn

static
void newconn(struct evconnlistener *lev, evutil_socket_t sock, struct sockaddr *cli, int socklen, void *raw)
{
    server *serv = raw;
    session *sess;
    printf("New client\n");
    sess = calloc(1, sizeof(*sess));
    if(sess) {
        sess->serv = serv;
        sess->S.build_stream = buildstream;
        sess->S.cleanup = &cleanup_session;
        /* periodic timer */
        sess->pingtimer = event_new(serv->base, -1, EV_PERSIST, pingconn, sess);
        assert(sess->pingtimer);
        sess->S.bev = bufferevent_socket_new(serv->base, sock, BEV_OPT_CLOSE_ON_FREE);
        if(sess->S.bev) {
            h2session_setup_bev(&sess->S);
            bufferevent_enable(sess->S.bev, EV_READ);

            if(prepare_h2_session(sess)) {
                bufferevent_free(sess->S.bev);
                free(sess);
                printf("Client failed\n");
                return;

            } else {
                nghttp2_settings_entry iv[] = {
                    {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 100},
                    {NGHTTP2_SETTINGS_ENABLE_PUSH, 0}
                };
                int rv;

                if ((rv=nghttp2_submit_settings(sess->S.h2sess, NGHTTP2_FLAG_NONE, iv, ARRLEN(iv))) ||
                        (rv=nghttp2_session_send(sess->S.h2sess)))
                {
                    printf("submit error: %s", nghttp2_strerror(rv));
                    cleanup_session(&sess->S);
                } else {
                    const struct timeval itvl = {5,0};
                    printf("Connection ready\n");
                    evtimer_add(sess->pingtimer, &itvl);
                }
            }
        }
    }
    if(!sess || !sess->S.bev) {
        fprintf(stderr, "No memory\n");
        free(sess);
        close(sock);
        return;
    }
}
开发者ID:mdavidsaver,项目名称:h2test,代码行数:52,代码来源:servetick.c


示例13: drained_writecbout

	static void
drained_writecbout(struct bufferevent *bev_out, void *ctx_in)
{
	fprintf(stderr, "drained_writecbout adjust the wartermark of <proxy->server>\n");
	struct bufferevent *partner_in = ctx_in;

	/* We were choking the other side until we drained our outbuf a bit.
	 * Now it seems drained. */
	bufferevent_setcb(bev_out, readcbout, NULL, eventcbout, partner_in);
	bufferevent_setwatermark(bev_out, EV_WRITE, 0, 0);
	if (partner_in)
		bufferevent_enable(partner_in, EV_READ);
}
开发者ID:hzsunzixiang,项目名称:programming,代码行数:13,代码来源:proxy2.c


示例14: client_event_cb

/* Send a byte to the server. */
static void
client_event_cb(struct bufferevent *bev, short events, void *ctx)
{
	if (events & BEV_EVENT_CONNECTED) {
		unsigned char tmp = 'A';
		bufferevent_write(bev, &tmp, 1);
	} else if (events & BEV_EVENT_ERROR) {
		puts("Client socket got error!");
		exit(2);
	}

	bufferevent_enable(bev, EV_READ);
}
开发者ID:sambuc,项目名称:netbsd,代码行数:14,代码来源:test-fdleak.c


示例15: watcher_new_conn

static void watcher_new_conn(struct evconnlistener *listener,
			     evutil_socket_t fd, struct sockaddr *address,
			     int socklen, void *vctx)
{
	struct watcher_ctx *ctx = vctx;
	struct bufferevent *bev;

	ctx->refcount++;
	bev = bufferevent_socket_new(ctx->event_base, fd,
				     BEV_OPT_CLOSE_ON_FREE);
	bufferevent_setcb(bev, NULL, NULL, watcher_conn_closed, vctx);
	bufferevent_enable(bev, EV_READ | EV_WRITE);
}
开发者ID:cernekee,项目名称:ocproxy,代码行数:13,代码来源:vpnns.c


示例16: http_makeconnect

void
http_makeconnect(struct bufferevent *bev, struct argument *arg)
{
	extern struct addr *socks_dst_addr;
	ip_addr_t address;

	socks_resolveaddress("www.google.com", &address);

	evbuffer_add_printf(EVBUFFER_OUTPUT(bev),
	    "CONNECT %s:80 HTTP/1.0\r\n"
	    "\r\n", addr_ntoa(socks_dst_addr), SSHUSERAGENT);
	bufferevent_enable(bev, EV_WRITE);
}
开发者ID:cracksoft,项目名称:scanssh,代码行数:13,代码来源:http.c


示例17: drained_writecbin

	static void
drained_writecbin(struct bufferevent *bev_in, void *ctx_out)
{
	fprintf(stderr, "drained_writecbin adjust the wartermark of <client-proxy>\n");
	struct bufferevent *partner_out= ctx_out;

	/* We were choking the other side until we drained our outbuf a bit.
	 * Now it seems drained. */
	bufferevent_setcb(bev_in, readcbin, NULL, eventcbin, partner_out);
	bufferevent_setwatermark(bev_in, EV_WRITE, 0, 0);
	if (partner_out)
		bufferevent_enable(partner_out, EV_READ);
}
开发者ID:hzsunzixiang,项目名称:programming,代码行数:13,代码来源:proxy2.c


示例18: direct_relay_readcb_helper

static void direct_relay_readcb_helper(redsocks_client *client, struct bufferevent *from, struct bufferevent *to)
{
	if (EVBUFFER_LENGTH(to->output) < to->wm_write.high) {
		if (bufferevent_write_buffer(to, from->input) == -1)
			redsocks_log_errno(client, LOG_ERR, "bufferevent_write_buffer");
		if (bufferevent_enable(from, EV_READ) == -1)
			redsocks_log_errno(client, LOG_ERR, "bufferevent_enable");
	}
	else {
		if (bufferevent_disable(from, EV_READ) == -1)
			redsocks_log_errno(client, LOG_ERR, "bufferevent_disable");
	}
}
开发者ID:neroanelli,项目名称:redsocks,代码行数:13,代码来源:autoproxy.c


示例19: socks_request_cb

static void
socks_request_cb(struct bufferevent *bev, void *ctx)
{
	struct socks_data *data = ctx;

	if (evbuffer_get_length(bufferevent_get_input(bev)) < data->req_len) {
		bufferevent_enable(bev, EV_READ);
		bufferevent_setwatermark(bev, EV_READ, data->req_len, 2048);
		bufferevent_setcb(bev, socks_request_cb, NULL,
					socks_request_error, ctx);
	} else
		data->req_cb(ctx);
}
开发者ID:stxh,项目名称:tunsocks,代码行数:13,代码来源:socks.c


示例20: bufferevent_enable

int Server::psub(struct evhttp_request *req){
	bufferevent_enable(req->evcon->bufev, EV_READ);

	PresenceSubscriber *psub = new PresenceSubscriber();
	psub->req = req;
	psub->serv = this;
	psubs.push_back(psub);
	log_info("%s:%d psub, psubs: %d", req->remote_host, req->remote_port, psubs.size);

	evhttp_send_reply_start(req, HTTP_OK, "OK");
	evhttp_connection_set_closecb(req->evcon, on_psub_disconnect, psub);
	return 0;
}
开发者ID:ITSTONE,项目名称:icomet,代码行数:13,代码来源:server.cpp



注:本文中的bufferevent_enable函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ bufferevent_get_output函数代码示例发布时间:2022-05-30
下一篇:
C++ buffer_write函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap