本文整理汇总了C++中bufferevent_new函数的典型用法代码示例。如果您正苦于以下问题:C++ bufferevent_new函数的具体用法?C++ bufferevent_new怎么用?C++ bufferevent_new使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bufferevent_new函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: grok_program_add_input_process
void grok_program_add_input_process(grok_program_t *gprog,
grok_input_t *ginput) {
struct bufferevent *bev;
grok_input_process_t *gipt = &(ginput->source.process);
int childin[2], childout[2], childerr[2];
int pid;
struct timeval now = { 0, 0 };
safe_pipe(childin);
safe_pipe(childout);
safe_pipe(childerr);
gipt->p_stdin = childin[1];
gipt->p_stdout = childout[0];
gipt->p_stderr = childerr[0];
gipt->c_stdin = childin[0];
gipt->c_stdout = childout[1];
gipt->c_stderr = childerr[1];
bev = bufferevent_new(gipt->p_stdout, _program_process_stdout_read,
NULL, _program_process_buferror, ginput);
bufferevent_enable(bev, EV_READ);
ginput->bev = bev;
if (gipt->read_stderr) {
/* store this somewhere */
bev = bufferevent_new(gipt->p_stderr, _program_process_stdout_read,
NULL, _program_process_buferror, ginput);
bufferevent_enable(bev, EV_READ);
}
grok_log(ginput, LOG_PROGRAMINPUT, "Scheduling start of: %s", gipt->cmd);
event_once(-1, EV_TIMEOUT, _program_process_start, ginput, &now);
}
开发者ID:jordansissel,项目名称:semicomplete-googlecode-archive,代码行数:34,代码来源:grok_input.c
示例2: accept_callback
void accept_callback(int fd,
short ev,
void *arg)
{
int client_fd;
struct sockaddr_in client_addr;
socklen_t client_len = sizeof(client_addr);
struct client *client;
client_fd = accept(fd,
(struct sockaddr *)&client_addr,
&client_len);
if (client_fd < 0)
{
warn("Client: accept() failed");
return;
}
setnonblock(client_fd);
client = calloc(1, sizeof(*client));
if (client == NULL)
err(1, "malloc failed");
client->fd = client_fd;
client->buf_ev = bufferevent_new(client_fd,
buf_read_callback,
buf_write_callback,
buf_error_callback,
client);
bufferevent_enable(client->buf_ev, EV_READ);
}
开发者ID:Xenland,项目名称:P2PCrypt-Server,代码行数:33,代码来源:server2.c
示例3: parentd
void
parentd(int nprocs, int *sockets)
{
int *fdp, i, status;
struct bufferevent *b;
signal(SIGINT, sigint);
gettimeofday(&ratetv, nil);
gettimeofday(&lastreporttv, nil);
memset(nreportbuf, 0, sizeof(nreportbuf));
for(i=0; i<NBUFFER; i++){
if((reportbuf[i] = calloc(params.nbuckets + num_cols, sizeof(int))) == nil)
panic("calloc");
}
event_init();
for(fdp=sockets; *fdp!=-1; fdp++){
b = bufferevent_new(
*fdp, chldreadcb, nil,
chlderrcb,(void *)&nprocs);
bufferevent_enable(b, EV_READ);
}
event_dispatch();
for(i=0; i<nprocs; i++)
waitpid(0, &status, 0);
report();
}
开发者ID:Zabrane,项目名称:hummingbird,代码行数:32,代码来源:hstress.c
示例4: buffer_event_push
/* LUA: new(fd, read, write, error)
Pushes a new bufferevent instance on the stack
Accepts: base, fd, read, write, error cb
Requires base, fd and error cb
*/
static int buffer_event_push(lua_State* L) {
le_bufferevent *ev;
le_base* base = event_base_get(L, 1);
/* NOTE: Should probably reference the socket as well... */
int fd = getSocketFd(L, 2);
luaL_checktype(L, 5, LUA_TFUNCTION);
if(!lua_isnil(L, 3)) luaL_checktype(L, 3, LUA_TFUNCTION);
if(!lua_isnil(L, 4)) luaL_checktype(L, 4, LUA_TFUNCTION);
ev= (le_bufferevent*)lua_newuserdata(L, sizeof(le_bufferevent));
luaL_getmetatable(L, BUFFER_EVENT_MT);
lua_setmetatable(L, -2);
ev->ev = bufferevent_new(fd, buffer_event_readcb, buffer_event_writecb, buffer_event_errorcb, ev);
lua_createtable(L, 5, 0);
lua_pushvalue(L, 3);
lua_rawseti(L, -2, 1); // Read
lua_pushvalue(L, 4);
lua_rawseti(L, -2, 2); // Write
lua_pushvalue(L, 5);
lua_rawseti(L, -2, 3); // Err
event_buffer_push(L, ev->ev->input);
lua_rawseti(L, -2, READ_BUFFER_LOCATION);
event_buffer_push(L, ev->ev->output);
lua_rawseti(L, -2, WRITE_BUFFER_LOCATION);
lua_setfenv(L, -2);
ev->base = base;
return 1;
}
开发者ID:jsnyder,项目名称:luaevent,代码行数:33,代码来源:buffer_event.c
示例5: void
struct StreamRequest *new_stream_request(const char *method, const char *source_address, int source_port, const char *path,
void (*header_cb)(struct bufferevent *bev, struct evkeyvalq *headers, void *arg),
void (*read_cb)(struct bufferevent *bev, void *arg),
void (*error_cb)(struct bufferevent *bev, void *arg),
void *arg) {
struct StreamRequest *sr;
int fd;
struct evbuffer *http_request;
fd = stream_request_connect(source_address, source_port);
if (fd == -1) {
return NULL;
}
sr = malloc(sizeof(struct StreamRequest));
sr->fd = fd;
sr->state = read_firstline;
sr->header_cb = header_cb;
sr->read_cb = read_cb;
sr->error_cb = error_cb;
sr->arg = arg;
sr->bev = bufferevent_new(sr->fd, stream_request_readcb, stream_request_writecb, stream_request_errorcb, sr);
http_request = evbuffer_new();
evbuffer_add_printf(http_request, "%s %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n", method, path, source_address);
bufferevent_write(sr->bev, (char *)EVBUFFER_DATA(http_request), EVBUFFER_LENGTH(http_request));
evbuffer_free(http_request);
return sr;
}
开发者ID:jayridge,项目名称:simplehttp,代码行数:29,代码来源:stream_request.c
示例6: accept_callback
void accept_callback(int fd, short ev, void *arg)
{
int client_fd;
struct sockaddr_in client_addr;
socklen_t client_len = sizeof(client_addr);
struct client *client;
printf("call accept_callback\n");
client_fd = accept(fd, (struct sockaddr *)&client_addr, &client_len);
if (client_fd < 0) {
printf("warn: client: accept() failed\n");
return;
}
set_non_block(client_fd);
client = (struct client*)calloc(1, sizeof(*client));
if (client == NULL) {
printf("error: malloc failed\n");
}
client->fd = client_fd;
client->buf_ev = bufferevent_new(client_fd,
buf_read_callback,
buf_write_callback,
buf_error_callback,
client);
// Enable a bufferevent.
// @param event any combination of EV_READ | EV_WRITE.
bufferevent_enable(client->buf_ev, EV_READ);
}
开发者ID:kangaukju,项目名称:common,代码行数:32,代码来源:test_libevent.cpp
示例7: test_bufferevent_watermarks_impl
static void
test_bufferevent_watermarks_impl(int use_pair)
{
struct bufferevent *bev1 = NULL, *bev2 = NULL;
char buffer[65000];
int i;
test_ok = 0;
if (use_pair) {
struct bufferevent *pair[2];
tt_assert(0 == bufferevent_pair_new(NULL, 0, pair));
bev1 = pair[0];
bev2 = pair[1];
bufferevent_setcb(bev1, NULL, wm_writecb, errorcb, NULL);
bufferevent_setcb(bev2, wm_readcb, NULL, errorcb, NULL);
} else {
bev1 = bufferevent_new(pair[0], NULL, wm_writecb, wm_errorcb, NULL);
bev2 = bufferevent_new(pair[1], wm_readcb, NULL, wm_errorcb, NULL);
}
bufferevent_disable(bev1, EV_READ);
bufferevent_enable(bev2, EV_READ);
for (i = 0; i < sizeof(buffer); i++)
buffer[i] = (char)i;
/* limit the reading on the receiving bufferevent */
bufferevent_setwatermark(bev2, EV_READ, 10, 20);
/* Tell the sending bufferevent not to notify us till it's down to
100 bytes. */
bufferevent_setwatermark(bev1, EV_WRITE, 100, 2000);
bufferevent_write(bev1, buffer, sizeof(buffer));
event_dispatch();
tt_int_op(test_ok, ==, 2);
/* The write callback drained all the data from outbuf, so we
* should have removed the write event... */
tt_assert(!event_pending(&bev2->ev_write, EV_WRITE, NULL));
end:
bufferevent_free(bev1);
bufferevent_free(bev2);
}
开发者ID:kjg,项目名称:libevent,代码行数:46,代码来源:regress_bufferevent.c
示例8: on_accept
void on_accept(int fd, short ev, void *arg) {
int client_fd;
struct sockaddr_in client_addr;
socklen_t client_len = sizeof(client_addr);
workqueue_t *workqueue = (workqueue_t *)arg;
client_t *client;
job_t *job;
client_fd = accept(fd, (struct sockaddr *)&client_addr, &client_len);
if (client_fd < 0) {
warn("accept failed");
return;
}
if (setnonblock(client_fd) < 0) {
warn("failed to set client socket to non-blocking");
close(client_fd);
return;
}
if ((client = malloc(sizeof(*client))) == NULL) {
warn("failed to allocate memory for client state");
close(client_fd);
return;
}
memset(client, 0, sizeof(*client));
client->fd = client_fd;
if ((client->output_buffer = evbuffer_new()) == NULL) {
warn("client output buffer allocation failed");
closeAndFreeClient(client);
return;
}
if ((client->evbase = event_base_new()) == NULL) {
warn("client event_base creation failed");
closeAndFreeClient(client);
return;
}
if ((client->buf_ev = bufferevent_new(client_fd, buffered_on_read, buffered_on_write, buffered_on_error, client)) == NULL) {
warn("client bufferevent creation failed");
closeAndFreeClient(client);
return;
}
bufferevent_base_set(client->evbase, client->buf_ev);
bufferevent_enable(client->buf_ev, EV_READ);
if ((job = malloc(sizeof(*job))) == NULL) {
warn("failed to allocate memory for job state");
closeAndFreeClient(client);
return;
}
job->job_function = server_job_function;
job->user_data = client;
workqueue_add_job(workqueue, job);
}
开发者ID:nike-17,项目名称:c-tcp-server-threaded,代码行数:58,代码来源:tcp-echo-server.c
示例9: maxconns_handler
static void maxconns_handler(const int fd, const short which, void *arg) {
struct timeval t = {.tv_sec = 0, .tv_usec = 10000};
if (fd == -42 || allow_new_conns == false) {
/* reschedule in 10ms if we need to keep polling */
evtimer_set(&maxconnsevent, maxconns_handler, 0);
event_base_set(main_base, &maxconnsevent);
evtimer_add(&maxconnsevent, &t);
} else {
evtimer_del(&maxconnsevent);
accept_new_conns(true);
}
}
static bool update_event(conn *c, const int new_flags) {
assert(c != NULL);
if (c->ev_flags == new_flags)
return true;
pthread_t tid = pthread_self();
if (tid == dispatcher_thread.thread_id)
{
struct event_base *base = c->event.ev_base;
if (event_del(&c->event) == -1) return false;
event_set(&c->event, c->sfd, new_flags, master_event_handler, (void *)c);
event_base_set(base, &c->event);
c->ev_flags = new_flags;
if (event_add(&c->event, 0) == -1) return false;
return true;
}else{
struct event_base *base = bufferevent_get_base(c->buf_ev);
bufferevent_free(c->buf_ev);
c->buf_ev = bufferevent_new(c->sfd, event_handler, buf_write_callback, buf_error_callback, (void * )c);
bufferevent_base_set(base, c->buf_ev);
c->ev_flags = new_flags;
if (bufferevent_enable(c->buf_ev, new_flags) == -1) return false;
return true;
}
//这个也得改成bufferevent的形式
/*
event_set(&c->event, c->sfd, new_flags, event_handler, (void *)c);
event_base_set(base, &c->event);
event_add(&c->event, 0);
c->buf_ev = bufferevent_new(c->sfd, event_handler, event_handler, NULL, (void * )c);
bufferevent_base_set(base, c->buf_ev);
bufferevent_enable(c->buf_ev, new_flags);
c->ev_flags = new_flags;
if (event_add(&c->event, 0) == -1) return false;
return true;
*/
}
开发者ID:wadee,项目名称:go_proj,代码行数:57,代码来源:threadsay.c
示例10: ReactorAccept
void ReactorAccept(int listenFd, short listenEv, void * arg)
{
NetReactor * nrc = (NetReactor *)arg;
if(nrc->isStop())
{
event lis = nrc->getListenEv();
event_del(&lis);
Log::NOTICE("SVR is STOP, don not accept");
return;
}
struct sockaddr sa;
socklen_t slen = sizeof(sa);
int connfd = net_accept(listenFd, &sa, &slen);
struct bufferevent ** pool;
pool = nrc->getFdPool();
int maxConnected = nrc->getMaxConnected();
in_addr ipaddr = ((struct sockaddr_in *)&sa)->sin_addr;
char *peer_ip = inet_ntoa(ipaddr);
if(connfd > maxConnected)
{
Log::ERROR("Too much user, connfd : %d", connfd);
close(connfd);
return;
}
NetConnManager * cMag = NetConnManager::getInstance();
if(cMag->IsUserConnExist(connfd))
{
Log::ERROR("assign a working fd, connfd : %d, will clean it",
connfd);
}
struct bufferevent * bev;
set_fd_noblock(connfd);
bev = bufferevent_new(connfd,
EvReadCallback,
NULL,
EvErrorCallback,
nrc);
bev->timeout_read = nrc->getReadTo();
bev->timeout_write = nrc->getWriteTo();
bufferevent_enable(bev, EV_READ|EV_WRITE);
std::unique_ptr<Iconn> con(new UserConn(nrc, bev));
cMag->setConn(connfd, std::move(con));
/* use for test */
//cMag->addAppConnFd(connfd);
Log::NOTICE("ACCEPT Connect SUCC, connfd : %d, UserIP : %s", connfd, peer_ip);
}
开发者ID:RoyLzr,项目名称:NetTalk,代码行数:56,代码来源:netReactor.cpp
示例11: perror
conn *conn_new(const int sfd, enum conn_states init_state,
const int event_flags,
const int read_buffer_size, enum network_transport transport,
struct event_base *base) {
/*此函数需要做的事情
1.新建一个conn结构,加入到connQ
2.为此链接(文件描述符),注册一个event_handler
3.event_handler进行状态的处理,不同状态不同的处理方式,master,slave共用此方法。
*/
conn * new_c;
new_c = conns[sfd];
if (NULL == new_c)
{
if ( !(new_c = (conn *)calloc(1, sizeof(conn))) )
{
perror("alloc conn fail");
exit(1);
}
new_c->sfd = sfd;
conns[sfd] = new_c;
}
new_c->state = init_state;
//以上是连接的初始化,接下来是连接的事件注册
pthread_t tid = pthread_self();
if (tid == dispatcher_thread.thread_id)
{
event_set(&new_c->event, sfd, event_flags, master_event_handler, (void*)new_c);
event_base_set(base, &new_c->event);
event_add(&new_c->event, 0);
}else{
new_c->buf_ev = bufferevent_new(sfd, event_handler, event_handler, buf_error_callback, (void *)new_c);
bufferevent_base_set(base, new_c->buf_ev);
bufferevent_enable(new_c->buf_ev, event_flags);
}
/*
想着想着还是决定改成用bufferevent。
因为master线程与slave用的是同一个函数来做处理event_handler -> drive_machine,
所以master线程的accept也需要改为用bufferevent,而且event_handler以及drive_machine也得改
还有struct conn的event也得改呀,得改成bufferevent类型呢
*/
/*
new_c->buf_ev = bufferevent_new(sfd, event_handler, event_handler, buf_error_callback, (void *)new_c);
bufferevent_base_set(base, new_c->buf_ev);
bufferevent_enable(new_c->buf_ev, event_flags);
*/
return new_c;
}
开发者ID:wadee,项目名称:go_proj,代码行数:55,代码来源:threadsay.c
示例12: red_connect_relay2
struct bufferevent* red_connect_relay2(struct sockaddr_in *addr, evbuffercb writecb, everrorcb errorcb, void *cbarg, const struct timeval *timeout_write)
{
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;
}
bufferevent_set_timeouts(retval, NULL, timeout_write);
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:jmttoki,项目名称:redsocks,代码行数:54,代码来源:utils.c
示例13: on_accept
/**
* This function will be called by libevent when there is a connection
* ready to be accepted.
*/
void on_accept(int fd, short ev, void *arg)
{
int client_fd;
struct sockaddr_in client_addr;
socklen_t client_len = sizeof(client_addr);
struct client *client;
client_fd = accept(fd, (struct sockaddr *)&client_addr, &client_len);
if (client_fd < 0) {
warn("accept failed");
return;
}
/* Set the client socket to non-blocking mode. */
if (setnonblock(client_fd) < 0)
warn("failed to set client socket non-blocking");
/* We've accepted a new client, create a client object. */
client = calloc(1, sizeof(*client));
if (client == NULL)
err(1, "malloc failed");
client->fd = client_fd;
/* Create the buffered event.
*
* The first argument is the file descriptor that will trigger
* the events, in this case the clients socket.
*
* The second argument is the callback that will be called
* when data has been read from the socket and is available to
* the application.
*
* The third argument is a callback to a function that will be
* called when the write buffer has reached a low watermark.
* That usually means that when the write buffer is 0 length,
* this callback will be called. It must be defined, but you
* don't actually have to do anything in this callback.
*
* The fourth argument is a callback that will be called when
* there is a socket error. This is where you will detect
* that the client disconnected or other socket errors.
*
* The fifth and final argument is to store an argument in
* that will be passed to the callbacks. We store the client
* object here.
*/
client->buf_ev = bufferevent_new(client_fd, buffered_on_read, buffered_on_write, buffered_on_error, client);
/* We have to enable it before our callbacks will be
* called. */
bufferevent_enable(client->buf_ev, EV_READ);
printf("Accepted connection from %s\n", inet_ntoa(client_addr.sin_addr));
}
开发者ID:chunxiao369,项目名称:chunxiao-code,代码行数:58,代码来源:server3.c
示例14: listener_accept
// wait for websocket connections
void listener_accept ( int fd, short type, void* arg ) {
struct sockaddr_in raddr;
int raddrlen = sizeof raddr;
int sock = accept ( fd, (struct sockaddr*)&raddr, &raddrlen );
if ( sock != -1 ) {
struct bufferevent* client = bufferevent_new ( sock,
client_read_ws_handshake,
NULL,
be_error, NULL );
bufferevent_enable ( client, EV_READ|EV_WRITE );
}
}
开发者ID:abarnert,项目名称:wsproxy,代码行数:13,代码来源:wsproxy.c
示例15: http_base_test
static void
http_base_test(void)
{
struct bufferevent *bev;
int fd;
const char *http_request;
short port = -1;
test_ok = 0;
fprintf(stdout, "Testing HTTP Server Event Base: ");
base = event_init();
/*
* create another bogus base - which is being used by all subsequen
* tests - yuck!
*/
event_init();
http = http_setup(&port, base);
fd = http_connect("127.0.0.1", port);
/* Stupid thing to send a request */
bev = bufferevent_new(fd, http_readcb, http_writecb,
http_errorcb, NULL);
bufferevent_base_set(base, bev);
http_request =
"GET /test HTTP/1.1\r\n"
"Host: somehost\r\n"
"Connection: close\r\n"
"\r\n";
bufferevent_write(bev, http_request, strlen(http_request));
event_base_dispatch(base);
bufferevent_free(bev);
EVUTIL_CLOSESOCKET(fd);
evhttp_free(http);
event_base_free(base);
base = NULL;
if (test_ok != 2) {
fprintf(stdout, "FAILED\n");
exit(1);
}
fprintf(stdout, "OK\n");
}
开发者ID:AllanXiang,项目名称:Source,代码行数:53,代码来源:regress_http.c
示例16: 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
示例17: bufferevent_socket_new
/*
* Create a new bufferevent for a socket and register it with the provided
* base. Note that options is always ignored, so programs using this backward
* compatibility layer cannot rely on it.
*/
struct bufferevent *
bufferevent_socket_new(struct event_base *base, evutil_socket_t fd,
int options UNUSED)
{
struct bufferevent *bev;
bev = bufferevent_new(fd, NULL, NULL, NULL, NULL);
if (bufferevent_base_set(base, bev) < 0) {
bufferevent_free(bev);
return NULL;
}
return bev;
}
开发者ID:ccin2p3,项目名称:remctl,代码行数:18,代码来源:event-extra.c
示例18: test_bufferevent_impl
static void
test_bufferevent_impl(int use_pair)
{
struct bufferevent *bev1 = NULL, *bev2 = NULL;
char buffer[8333];
int i;
if (use_pair) {
struct bufferevent *pair[2];
tt_assert(0 == bufferevent_pair_new(NULL, 0, pair));
bev1 = pair[0];
bev2 = pair[1];
bufferevent_setcb(bev1, readcb, writecb, errorcb, NULL);
bufferevent_setcb(bev2, readcb, writecb, errorcb, NULL);
} else {
bev1 = bufferevent_new(pair[0], readcb, writecb, errorcb, NULL);
bev2 = bufferevent_new(pair[1], readcb, writecb, errorcb, NULL);
}
bufferevent_disable(bev1, EV_READ);
bufferevent_enable(bev2, EV_READ);
for (i = 0; i < sizeof(buffer); i++)
buffer[i] = i;
bufferevent_write(bev1, buffer, sizeof(buffer));
event_dispatch();
bufferevent_free(bev1);
bufferevent_free(bev2);
if (test_ok != 2)
test_ok = 0;
end:
;
}
开发者ID:kjg,项目名称:libevent,代码行数:37,代码来源:regress_bufferevent.c
示例19: malloc
static struct DSClient *new_domain_socket_client(struct DomainSocket *uds,
int client_fd, struct sockaddr *sa, socklen_t salen)
{
struct DSClient *client;
client = malloc(sizeof(struct DSClient));
client->uds = uds;
client->fd = client_fd;
client->bev = bufferevent_new(client_fd, buffered_on_read, buffered_on_write, buffered_on_error, client);
bufferevent_enable(client->bev, EV_READ);
_DEBUG("%s: %d\n", __FUNCTION__, client->fd);
return client;
}
开发者ID:jayridge,项目名称:simplehttp,代码行数:15,代码来源:domain_socket.c
示例20: main
int main() {
struct event ev;
struct bufferevent *bev;
int fd;
fd = open("/var/log/messages", O_RDONLY);
event_init();
bev = bufferevent_new(fd, fileread, NULL, NULL, NULL);
bufferevent_enable(bev, EV_READ);
//event_set(&ev, 0, EV_READ | EV_PERSIST, fileread, NULL);
//event_add(&ev, NULL);
event_dispatch();
return 0;
}
开发者ID:40a,项目名称:experiments,代码行数:15,代码来源:libevent.c
注:本文中的bufferevent_new函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论