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

C++ bufferevent_write函数代码示例

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

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



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

示例1: have

void 
have(struct Piece *piece, struct Torrent *t)
{
     uint32_t have_prefix = htonl(5);
     uint8_t have_id = 4;
     uint32_t index = htonl(piece->index);
     struct PeerNode *head = t->peer_list;

     while (head != NULL) {
          bufferevent_write(head->cargo->bufev, (const void *)&have_prefix, sizeof(have_prefix));
          bufferevent_write(head->cargo->bufev, (const void *)&have_id, sizeof(have_id));
          bufferevent_write(head->cargo->bufev, (const void *)&index, sizeof(index));
          head = head->next;
     }

     t->have_bitfield[piece->index] = 1;

     uint64_t i = pieces_remaining(t->have_bitfield, t->num_pieces);

     /* if 0 pieces remain, the torrent is complete */
     if (i == 0) {
          complete(t);
     }

#ifdef DEBUG
     if (i < 5) {
          print_pieces_remaining(t->have_bitfield, t->num_pieces);
     }
#endif
}
开发者ID:robertseaton,项目名称:slug,代码行数:30,代码来源:peer.c


示例2: rrdtool_write_command

static void
rrdtool_write_command(struct rrdtool_drv *drv, char *command)
{
	bufferevent_write(drv->evb, command, strlen(command));
	if (command[strlen(command) - 1] != '\n')
		bufferevent_write(drv->evb, "\n", 1);
}
开发者ID:ChristosKon,项目名称:honeyd-ipv6,代码行数:7,代码来源:rrdtool.c


示例3: cmd_paste_buffer_filter

/* Add bytes to a buffer and filter '\n' according to separator. */
void
cmd_paste_buffer_filter(struct window_pane *wp,
    const char *data, size_t size, const char *sep, int bracket)
{
	const char	*end = data + size;
	const char	*lf;
	size_t		 seplen;

	if (bracket)
		bufferevent_write(wp->event, "\033[200~", 6);

	seplen = strlen(sep);
	while ((lf = memchr(data, '\n', end - data)) != NULL) {
		if (lf != data)
			bufferevent_write(wp->event, data, lf - data);
		bufferevent_write(wp->event, sep, seplen);
		data = lf + 1;
	}

	if (end != data)
		bufferevent_write(wp->event, data, end - data);

	if (bracket)
		bufferevent_write(wp->event, "\033[201~", 6);
}
开发者ID:cowboyrushforth,项目名称:tmux2,代码行数:26,代码来源:cmd-paste-buffer.c


示例4: lpacket_sender

//channel_id number
//packet lstring
static int lpacket_sender(lua_State *L)
{
    int channel_id = luaL_checkint(L, 1);
    struct bufferevent *bev = AllChannels[channel_id]._bev;
    if (!bev) {
        logging("lpacket_sender error : channel has closed");
        lua_pushboolean(L, 0);
        return 1;
    }
    size_t sz;
    const char *packet = luaL_checklstring(L, 2, &sz);

    if (sz > MAX_PACKET_SZ) {
        logging("packet tooooo big, throw it");
        lua_pushboolean(L, 0);
        return 1;
    }
    packet_header_t packet_len = (packet_header_t)sz;
    if ((bufferevent_write(bev, &packet_len, PACKET_HEADER_SZ) != -1)
            && bufferevent_write(bev, packet, packet_len) != -1) {
        lua_pushboolean(L, 1);
        return 1;
    }
    logging("write packet error");
    lua_pushboolean(L, 0);
    return 1;
}
开发者ID:longzhiri,项目名称:lrpc,代码行数:29,代码来源:lrpc_main.c


示例5: send_bptree_result

static void send_bptree_result(tcp_client *c, int rv, int32_t vsize, void *v)
{
	int size = sizeof(int32_t) + vsize;
	bufferevent_write(c->buffer_ev, &size,sizeof(int));
	bufferevent_write(c->buffer_ev, &rv,sizeof(int));
	bufferevent_write(c->buffer_ev, &vsize,sizeof(int32_t));
	bufferevent_write(c->buffer_ev,v,vsize);
}
开发者ID:atomic77,项目名称:mosql-storage,代码行数:8,代码来源:tcp.c


示例6: unchoke

void 
unchoke(struct Peer *p)
{
     uint32_t unchoke_prefix = htonl(1);
     uint8_t unchoke_id = 1;

     bufferevent_write(p->bufev, (const void *)&unchoke_prefix, sizeof(unchoke_prefix));
     bufferevent_write(p->bufev, (const void *)&unchoke_id, sizeof(unchoke_id));
     p->tstate.choked = 0;
}
开发者ID:robertseaton,项目名称:slug,代码行数:10,代码来源:peer.c


示例7: not_interested

void 
not_interested(struct Peer *p)
{
     uint32_t not_interested_prefix = htonl(1);
     uint8_t not_interested_id = 3;

     bufferevent_write(p->bufev, (const void *)&not_interested_prefix, sizeof(not_interested_prefix));
     bufferevent_write(p->bufev, (const void *)&not_interested_id, sizeof(not_interested_id));
     p->tstate.interested = 0;
}
开发者ID:robertseaton,项目名称:slug,代码行数:10,代码来源:peer.c


示例8: interested

void 
interested(struct Peer *p)
{
     uint32_t interested_prefix = htonl(1);
     uint8_t interested_id = 2;
     
     bufferevent_write(p->bufev, (const void *)&interested_prefix, sizeof(interested_prefix));
     bufferevent_write(p->bufev, (const void *)&interested_id, sizeof(interested_id));
     p->tstate.interested = 1;
}
开发者ID:robertseaton,项目名称:slug,代码行数:10,代码来源:peer.c


示例9: write_socks_request

static void
write_socks_request(struct conninfo *info)
{
	if (info->socks == SOCKS_4) {
		struct sockaddr_in *sin = (struct sockaddr_in*)&info->addr;

		if (info->addr.ss_family != AF_INET) {
			finish_connection(info, 0,
				"SOCKS 4 can't handle ipv6!");
		}

		/* connection request */
		bufferevent_write(info->bev, "\x04\x01", 2);
		bufferevent_write(info->bev, &sin->sin_port,
				  sizeof(sin->sin_port));
		bufferevent_write(info->bev, &sin->sin_addr.s_addr,
				  sizeof(sin->sin_addr.s_addr));
		bufferevent_write(info->bev, "xx", 3);
	} else {
		ev_uint16_t port = htons(info->port);

		assert(info->host != NULL);
		bufferevent_write(info->bev, "\x04\x01", 2);
		bufferevent_write(info->bev, &port, sizeof(port));
		bufferevent_write(info->bev, "\x00\x00\x00\xff", 4);
		bufferevent_write(info->bev, "xx", 3);
		bufferevent_write(info->bev, info->host, strlen(info->host)+1);
	}

	bufferevent_enable(info->bev, EV_READ);
}
开发者ID:0xffea,项目名称:shim,代码行数:31,代码来源:conn.c


示例10: togo_wt_send_cb

int togo_wt_send_cb(TOGO_THREAD_ITEM * socket_item)
{
	int ret;
	char int_str[12];

	/* If sstatus equal to 3, send the big data! */
	if (socket_item->sstatus == 3) {

		BDATA_CALLBACK callback;
		if (socket_item->bsbuf == NULL || socket_item->bssize == 0) {
			return 0;
		}

		togo_itoa((uint32_t) socket_item->bssize, int_str, 10);

		/**
		 * Retrun:TOGO_S10TOGO_E/r/nAAAAAAAAAA
		 */
		ret = bufferevent_write(socket_item->bev, TOGO_SBUF_START,
				togo_strlen(TOGO_SBUF_START));
		ret = bufferevent_write(socket_item->bev, int_str,
				togo_strlen(int_str));
		ret += bufferevent_write(socket_item->bev, TOGO_SBUF_END,
				togo_strlen(TOGO_SBUF_END));
		ret += bufferevent_write(socket_item->bev, socket_item->bsbuf,
				socket_item->bssize);

		if (ret < 0) {
			togo_log(INFO, "Send data error");
		}

		callback = socket_item->bscb;
		if (callback != NULL) {
			callback(socket_item);
		}
		socket_item->sstatus = 0;

	} else {

		if (socket_item->sfd < 1 || socket_item->sbuf == NULL
				|| socket_item->ssize == 0) {
			return 0;
		}

		ret = bufferevent_write(socket_item->bev, socket_item->sbuf,
				socket_item->ssize);
		if (ret < 0) {
			togo_log(INFO, "Send data error");
		}
		socket_item->ssize = 0;
	}

	return ret;
}
开发者ID:keheng,项目名称:togo,代码行数:54,代码来源:togo_server.c


示例11: server_read

// server has produced data, relay it to the websocket client
static void server_read ( struct bufferevent* be, void* arg ) {
  struct bufferevent* client = (struct bufferevent*) arg;
  char buf[1024 * 10];
  int n = bufferevent_read ( be, buf, sizeof buf );
  if ( n > 0 ) {
    bufferevent_write ( client, frame, 1 );      // start of frame
    bufferevent_write ( client, buf, n );
    bufferevent_write ( client, frame + 1, 1 );  // end of frame
    bufferevent_enable ( client, EV_WRITE );
  }
}
开发者ID:abarnert,项目名称:wsproxy,代码行数:12,代码来源:wsproxy.c


示例12: send_server_message

void send_server_message(struct bufferevent *bev, const char *msg, uint16_t len)
{
    struct packet_server_message data;

    data.hdr.proto = PROTO_EDONKEY;
    data.hdr.length = sizeof(data) - sizeof(data.hdr) + len;
    data.opcode = OP_SERVERMESSAGE;
    data.msg_len = len;

    bufferevent_write(bev, &data, sizeof(data));
    bufferevent_write(bev, msg, len);
}
开发者ID:gureedo,项目名称:ed2kd,代码行数:12,代码来源:packet.c


示例13: send_found_sources

void send_found_sources(struct bufferevent *bev, const unsigned char *hash, struct file_source *sources, size_t count)
{
    struct packet_found_sources data;
    size_t srcs_len = count * sizeof(*sources);

    data.hdr.proto = PROTO_EDONKEY;
    memcpy(data.hash, hash, sizeof(data.hash));
    data.hdr.length = sizeof(data) - sizeof(data.hdr) + srcs_len;
    data.opcode = OP_FOUNDSOURCES;
    data.count = count;
    bufferevent_write(bev, &data, sizeof(data));
    if (count)
        bufferevent_write(bev, sources, srcs_len);
}
开发者ID:gureedo,项目名称:ed2kd,代码行数:14,代码来源:packet.c


示例14: levent_ctl_send

static ssize_t
levent_ctl_send(struct lldpd_one_client *client, int type, void *data, size_t len)
{
	struct bufferevent *bev = client->bev;
	struct hmsg_header hdr = { .len = len, .type = type };
	bufferevent_disable(bev, EV_WRITE);
	if (bufferevent_write(bev, &hdr, sizeof(struct hmsg_header)) == -1 ||
	    (len > 0 && bufferevent_write(bev, data, len) == -1)) {
		log_warnx("event", "unable to create answer to client");
		levent_ctl_free_client(client);
		return -1;
	}
	bufferevent_enable(bev, EV_WRITE);
	return len;
}
开发者ID:kghost,项目名称:lldpd,代码行数:15,代码来源:event.c


示例15: thread_bufferread_cb_enc

void thread_bufferread_cb_enc(struct bufferevent *bev, void *ptr)
{
    P_TRANS_ITEM p_trans = (P_TRANS_ITEM)ptr; 

    ENC_FRAME from_f;
    ENC_FRAME to_f;

    struct evbuffer *input = bufferevent_get_input(bev);
    struct evbuffer *output = bufferevent_get_output(bev);

    if (bev == p_trans->bev_u && p_trans->bev_d) 
    {
        st_d_print("加密转发数据包USR->REMOTE");    // 解密

        from_f.len = bufferevent_read(p_trans->bev_u, from_f.dat, FRAME_SIZE); 
        if (from_f.len > 0)
        {
            decrypt(&p_trans->ctx_dec, &from_f, &to_f);
            bufferevent_write(p_trans->bev_d, to_f.dat, from_f.len);
        }        
        else
        {
            st_d_error("读取数据出错!");
        }

    }
    else if (bev == p_trans->bev_d && p_trans->bev_u) 
    {
        st_d_print("加密转发数据包REMOTE->USR");    // 加密

        from_f.len = bufferevent_read(p_trans->bev_d, from_f.dat, FRAME_SIZE);
        if (from_f.len > 0)
        {
            encrypt(&p_trans->ctx_enc, &from_f, &to_f);
            bufferevent_write(p_trans->bev_u, to_f.dat, to_f.len);
        }        
        else
        {
            st_d_error("读取数据出错!");
        }
    }
    else
    {
        SYS_ABORT("WRRRRRR!");
    }

    return;
}
开发者ID:DenisZheng,项目名称:sshinner,代码行数:48,代码来源:sshinner_s_threads.c


示例16: fcgi_add_param

int
fcgi_add_param(struct server_fcgi_param *p, const char *key,
    const char *val, struct client *clt)
{
	struct fcgi_record_header	*h;
	int				 len = 0;
	int				 key_len = strlen(key);
	int				 val_len = strlen(val);
	uint8_t				*param;

	len += key_len + val_len;
	len += key_len > 127 ? 4 : 1;
	len += val_len > 127 ? 4 : 1;

	DPRINTF("%s: %s[%d] => %s[%d], total_len: %d", __func__, key, key_len,
	    val, val_len, p->total_len);

	if (len > FCGI_CONTENT_SIZE)
		return (-1);

	if (p->total_len + len > FCGI_CONTENT_SIZE) {
		bufferevent_write(clt->clt_srvbev, p->buf,
		    sizeof(struct fcgi_record_header) + p->total_len);
		p->total_len = 0;
	}

	h = (struct fcgi_record_header *)p->buf;
	param = p->buf + sizeof(*h) + p->total_len;

	if (key_len > 127) {
		*param++ = ((key_len >> 24) & 0xff) | 0x80;
		*param++ = ((key_len >> 16) & 0xff);
		*param++ = ((key_len >> 8) & 0xff);
		*param++ = (key_len & 0xff);
	} else
开发者ID:aixiansheng,项目名称:httpd,代码行数:35,代码来源:server_fcgi.c


示例17: client_invalid_version

void client_invalid_version(Client *cl)
{
  static const uint8_t message[] = {SOCKS5_VER, AUTH_METHOD_INVALID};

  bufferevent_write(cl->client.bufev, message, sizeof (message));
  client_disconnect(cl);
}
开发者ID:iksaif,项目名称:sockslink,代码行数:7,代码来源:client.c


示例18: httpr_client_read_content

static void httpr_client_read_content(struct bufferevent *buffev, redsocks_client *client)
{
	httpr_client *httpr = (void*)(client + 1);

	static int post_buffer_len = 64 * 1024;
	char *post_buffer = calloc(post_buffer_len, 1);
	if (!post_buffer) {
		redsocks_log_error(client, LOG_ERR, "run out of memory");
		redsocks_drop_client(client);
		return;
	}
	int error;
	while (true) {
		error = evbuffer_remove(buffev->input, post_buffer, post_buffer_len);
		if (error < 0) {
			free(post_buffer);
			redsocks_log_error(client, LOG_ERR, "evbuffer_remove");
			redsocks_drop_client(client);
			return;
		}
		if (error == 0)
			break;
		httpr_buffer_append(&httpr->client_buffer, post_buffer, error);
		if (client->relay && client->state >= httpr_request_sent) {
			if (bufferevent_write(client->relay, post_buffer, error) != 0) {
				free(post_buffer);
				redsocks_log_error(client, LOG_ERR, "bufferevent_write");
				redsocks_drop_client(client);
				return;
			}
		}

	}
	free(post_buffer);
}
开发者ID:aventado,项目名称:redsocks,代码行数:35,代码来源:http-relay.c


示例19: cmd_paste_buffer_lf2cr

/* Add bytes to a buffer but change every '\n' to '\r'. */
void
cmd_paste_buffer_lf2cr(struct window_pane *wp, const char *data, size_t size)
{
	const char	*end = data + size;
	const char	*lf;

	while ((lf = memchr(data, '\n', end - data)) != NULL) {
		if (lf != data)
			bufferevent_write(wp->event, data, lf - data);
		bufferevent_write(wp->event, "\r", 1);
		data = lf + 1;
	}

	if (end != data)
		bufferevent_write(wp->event, data, end - data);
}
开发者ID:dsturnbull,项目名称:tmux,代码行数:17,代码来源:cmd-paste-buffer.c


示例20: bufferevent_send

int  bufferevent_send(struct bufferevent *bev, const void *data, uint32_t len)
{
    uint32_t max_write = 0;
    int sent_total = 0;
    uint32_t sent = 0;
    uint32_t left = len;

    while(left > 0) {
        max_write = bufferevent_get_max_to_write(bev);
        sent = left;
        if(sent > max_write) sent = max_write;

        if(sent > 0){
            /* LoggerDebug("@@-- sent %d/%d bytes, send:%d max:%d.", */
            /*             sent_total, length, sent, max_write); */
            if(0 == bufferevent_write(bev, data + sent_total, sent)){
                /* send OK */
                sent_total += sent;
                left -= sent;
                /* printf("@@!! sent %d/%d bytes, send:%d max:%d.\n", */
                /*             sent_total, len, sent, max_write); */
            } else {
                log_info("bufferevent_write  failed: %s", strerror(errno));
                return -1;
            }
        } else {
            log_dbg("wait...");
        }
    }

    /* bufferevent_flush(bev, EV_WRITE, BEV_FLUSH); */

    return sent_total;
}
开发者ID:wuhong1986,项目名称:cutils,代码行数:34,代码来源:socket_libevent.c



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
C++ buffonstack函数代码示例发布时间:2022-05-30
下一篇:
C++ bufferevent_socket_new函数代码示例发布时间: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