本文整理汇总了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 *)¬_interested_prefix, sizeof(not_interested_prefix));
bufferevent_write(p->bufev, (const void *)¬_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;未经允许,请勿转载。 |
请发表评论