本文整理汇总了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;未经允许,请勿转载。 |
请发表评论