本文整理汇总了C++中close_conn函数的典型用法代码示例。如果您正苦于以下问题:C++ close_conn函数的具体用法?C++ close_conn怎么用?C++ close_conn使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了close_conn函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: mom_close_client
static void mom_close_client(
int sfds) /* connection socket */
{
struct batch_request *preq;
close_conn(sfds, FALSE); /* close the connection */
preq = (struct batch_request *)GET_NEXT(svr_requests);
while (preq != NULL)
{
/* list of outstanding requests */
if (preq->rq_conn == sfds)
preq->rq_conn = -1;
if (preq->rq_orgconn == sfds)
preq->rq_orgconn = -1;
preq = (struct batch_request *)GET_NEXT(preq->rq_link);
}
return;
} /* END mom_close_client() */
开发者ID:actorquedeveloper,项目名称:torque-old,代码行数:27,代码来源:mom_process_request.c
示例2: tasks_free
void tasks_free(
job *pj)
{
task *tp = (task *)GET_NEXT(pj->ji_tasks);
obitent *op;
infoent *ip;
container::item_container<struct tcp_chan *> freed_chans;
while (tp != NULL)
{
op = (obitent *)GET_NEXT(tp->ti_obits);
while (op != NULL)
{
delete_link(&op->oe_next);
free(op);
op = (obitent *)GET_NEXT(tp->ti_obits);
} /* END while (op != NULL) */
ip = (infoent *)GET_NEXT(tp->ti_info);
while (ip != NULL)
{
delete_link(&ip->ie_next);
free(ip->ie_name);
free(ip->ie_info);
free(ip);
ip = (infoent *)GET_NEXT(tp->ti_info);
}
if (tp->ti_chan != NULL)
{
char ptr[50];
sprintf(ptr,"%p",(void *)tp->ti_chan);
freed_chans.lock();
if(freed_chans.insert(tp->ti_chan,ptr))
{
close_conn(tp->ti_chan->sock, FALSE);
DIS_tcp_cleanup(tp->ti_chan);
}
freed_chans.unlock();
tp->ti_chan = NULL;
}
delete_link(&tp->ti_jobtask);
free(tp);
tp = (task *)GET_NEXT(pj->ji_tasks);
} /* END while (tp != NULL) */
return;
} /* END tasks_free() */
开发者ID:ansonl,项目名称:torque,代码行数:60,代码来源:mom_job_func.c
示例3: atcp_recv_cb
/**
* Only used in TCP mode.
*/
static err_t atcp_recv_cb(void *arg, struct tcp_pcb *pcb, struct pbuf *p,
err_t err) {
struct ttcp* ttcp = arg;
if (err == ERR_OK && p != NULL) {
INFO_TCP("pcb:%p pbuf: %p err:%d len:%d\n", pcb, p, err, p->tot_len);
DATA_LED_ON();
/* for print_stats() */
ttcp->recved += p->tot_len;
if ((ttcp->verbose)||(verboseDebug & INFO_TCP_FLAG)) {
INFO_TCP("len:%d\n",p->tot_len);
DUMP_TCP(p->payload, p->tot_len);
ttcp->print_cnt++;
}
insert_pBuf(p, ttcp->sock, (void*) pcb);
tcp_recved(pcb, p->tot_len);
pbuf_free(p);
DATA_LED_OFF();
}
/* p will be NULL when remote end is done */
if (err == ERR_OK && p == NULL) {
INFO_TCP("atcp_recv_cb p=NULL\n");
close_conn(ttcp);
}
if (err!=ERR_OK)
WARN("err=%d p=%p\n", err, p);
return ERR_OK;
}
开发者ID:4bcat,项目名称:Arduino,代码行数:35,代码来源:ard_tcp.c
示例4: echo_recv
static err_t echo_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
{
os_printf("Echo recv!\n");
HTTPServer* self = (HTTPServer*) arg;
int i;
int len;
char *pc;
if (err == ERR_OK && p != NULL) {
// Inform TCP that we have taken the data.
tcp_recved(pcb, p->tot_len);
os_printf("TCP recv no error!\n");
//pointer to the pay load
pc = (char *)p->payload;
//size of the pay load
len = p->tot_len;
uint16_t bufferLength = 1500;
char buffer[bufferLength];
self->onReceive(pc);
self->receiveCallback(pc, buffer);
pbuf_free(p);
err = tcp_write(pcb, buffer, bufferLength, 0);
tcp_sent(pcb, data_sent);
}
if (err == ERR_OK && p == NULL) {
close_conn(pcb);
}
return ERR_OK;
}
开发者ID:Lembed,项目名称:ROS-FreeRTOS-STM32,代码行数:34,代码来源:XMLRPCServer.cpp
示例5: tasks_free
void tasks_free(
job *pj)
{
task *tp = (task *)GET_NEXT(pj->ji_tasks);
obitent *op;
infoent *ip;
resizable_array *freed_chans = initialize_resizable_array(30);
while (tp != NULL)
{
op = (obitent *)GET_NEXT(tp->ti_obits);
while (op != NULL)
{
delete_link(&op->oe_next);
free(op);
op = (obitent *)GET_NEXT(tp->ti_obits);
} /* END while (op != NULL) */
ip = (infoent *)GET_NEXT(tp->ti_info);
while (ip != NULL)
{
delete_link(&ip->ie_next);
free(ip->ie_name);
free(ip->ie_info);
free(ip);
ip = (infoent *)GET_NEXT(tp->ti_info);
}
if (tp->ti_chan != NULL)
{
if (is_present(freed_chans, tp->ti_chan) == FALSE)
{
insert_thing(freed_chans, tp->ti_chan);
close_conn(tp->ti_chan->sock, FALSE);
DIS_tcp_cleanup(tp->ti_chan);
}
tp->ti_chan = NULL;
}
delete_link(&tp->ti_jobtask);
free(tp);
tp = (task *)GET_NEXT(pj->ji_tasks);
} /* END while (tp != NULL) */
free_resizable_array(freed_chans);
return;
} /* END tasks_free() */
开发者ID:boegel,项目名称:torque,代码行数:59,代码来源:mom_job_func.c
示例6: rp_fatal
/**********************************************************************
*%FUNCTION: rp_fatal
*%ARGUMENTS:
* str -- error message
*%RETURNS:
* Nothing
*%DESCRIPTION:
* Prints a message to stderr and syslog and exits.
***********************************************************************/
void
rp_fatal(char const *str)
{
printErr(str);
sendPADTf(conn, "RP-PPPoE: %.256s", str);
close_conn(0);
cleanup_conn();
exit(1);
}
开发者ID:andy-padavan,项目名称:rt-n56u,代码行数:18,代码来源:plugin.c
示例7: server_recv
/*..........................................................................*/
static err_t server_recv(void *arg,
struct tcp_pcb *pcb,
struct pbuf *p,
err_t err)
{
char *data;
struct server_state *hs = arg;
// DEBUG_PRINT("server_recv 0x%08x\n", pcb);
if (err != ERR_OK)
return ERR_OK; //TODO: is this return value OK?
if (p == NULL)
{
//TODO: is this OK?
close_conn(pcb, hs);
return ERR_OK;
}
/* Inform TCP that we have taken the data. */
tcp_recved(pcb, p->tot_len);
data = p->payload;
// Generate output data
/*
if (file) {
hs->file = file->data;
LWIP_ASSERT("File length must be positive!",
(file->len >= 0));
hs->left = file->len;
hs->retries = 0;
pbuf_free(p);
}
else {
hs->file = NULL;
hs->left = 0;
hs->retries = 0;
}
*/
/*Tell TCP that we wish be to informed of data that has been
* successfully sent by a call to the server_sent() function.
*/
// tcp_sent(pcb, server_sent);
/* Start sending the headers and file data. */
// send_data(pcb, hs);
pbuf_free(p);
// If you wanna close the connection
// close_conn(pcb, hs);
return ERR_OK;
}
开发者ID:kitnic,项目名称:marmote,代码行数:58,代码来源:sampleserver.c
示例8: rw_callback
static void
rw_callback(picoev_loop* loop, int fd, int events, void* cb_arg)
{
if ((events & PICOEV_TIMEOUT) != 0)
{
/* timeout */
close_conn(loop, fd);
}
else if ((events & PICOEV_READ) != 0)
{
/* update timeout, and read */
char buf[1024];
ssize_t r;
picoev_set_timeout(loop, fd, TIMEOUT_SECS);
r = read(fd, buf, sizeof(buf));
switch (r)
{
case 0: /* connection closed by peer */
close_conn(loop, fd);
break;
case -1: /* error */
if (errno == EAGAIN || errno == EWOULDBLOCK)
{ /* try again later */
break;
}
else
{ /* fatal error */
close_conn(loop, fd);
}
break;
default: /* got some data, send back */
if (write(fd, buf, r) != r)
{
close_conn(loop, fd); /* failed to send all data at once, close */
}
break;
}
}
}
开发者ID:dpersson,项目名称:libasev,代码行数:42,代码来源:asev.c
示例9: main
int main( int argc, char* argv[] )
{
assert( argc == 4 );
int epoll_fd = epoll_create( 100 );
start_conn( epoll_fd, atoi( argv[ 3 ] ), argv[1], atoi( argv[2] ) );
epoll_event events[ 10000 ];
char buffer[ 2048 ];
while ( 1 )
{
int fds = epoll_wait( epoll_fd, events, 10000, 2000 );
for ( int i = 0; i < fds; i++ )
{
int sockfd = events[i].data.fd;
if ( events[i].events & EPOLLIN )
{
if ( ! read_once( sockfd, buffer, 2048 ) )
{
close_conn( epoll_fd, sockfd );
}
struct epoll_event event;
event.events = EPOLLOUT | EPOLLET | EPOLLERR;
event.data.fd = sockfd;
epoll_ctl( epoll_fd, EPOLL_CTL_MOD, sockfd, &event );
}
else if( events[i].events & EPOLLOUT )
{
if ( ! write_nbytes( sockfd, request, strlen( request ) ) )
{
close_conn( epoll_fd, sockfd );
}
struct epoll_event event;
event.events = EPOLLIN | EPOLLET | EPOLLERR;
event.data.fd = sockfd;
epoll_ctl( epoll_fd, EPOLL_CTL_MOD, sockfd, &event );
}
else if( events[i].events & EPOLLERR )
{
close_conn( epoll_fd, sockfd );
}
}
}
}
开发者ID:myd620,项目名称:test,代码行数:42,代码来源:stress_client.cpp
示例10: handle_data
static void handle_data(int fd, short what, Connection *conn, int side) {
int from = conn->fd[side];
int to = conn->fd[!side];
char buf[4096];
int nread;
event_add(&conn->read_event[side], &cfg.timeout);
if ((what & EV_TIMEOUT) != 0) {
dump_buffer(conn);
return;
}
if (conn->collecting_from != side) {
dump_buffer(conn);
}
nread = read(from, buf, sizeof(buf));
switch (nread) {
case 0:
close_conn(conn, from);
break;
case -1:
if (errno != EAGAIN && errno != EINTR) {
close_conn(conn, -1);
}
break;
default:
if (cfg.have_otherhost) {
if (write(to, buf, nread) != nread) {
die("Write to fd %d failed: %d (%s)\n", errno, strerror(errno));
}
}
buf_append_n(conn->txfer_buf, buf, nread);
conn->last_read_time = time(NULL);
conn->collecting_from = side;
break;
}
}
开发者ID:tonyg,项目名称:passthru,代码行数:41,代码来源:passthru.c
示例11: main
int main(int argc,char* argv[])
{
assert(argc == 4);
int epoll_fd = epoll_create(100);
char ip_array[600] = "192.168.6.101,192.168.6.102,192.168.6.103,192.168.6.104,192.168.6.105,192.168.6.106,192.168.6.107,192.168.6.108,192.168.6.109,192.168.6.111,192.168.6.112,192.168.6.113,192.168.6.114,192.168.6.115,192.168.6.116,192.168.6.117,192.168.6.118,192.168.6.119";
char *ori_ip = NULL;
char delims[] =",";
ori_ip = strtok(ip_array,delims);
while(ori_ip != NULL)
{
start_conn(epoll_fd,atoi(argv[3]),argv[1],atoi(argv[2]),ori_ip);
ori_ip = strtok(NULL,delims);
}
struct epoll_event events[10000];
char buffer[2048];
while(1)
{
int fds = epoll_wait(epoll_fd,events,10000,2000);
for(int i = 0; i<fds;i++)
{
int sockfd = events[i].data.fd;
if(events[i].events & EPOLLIN)
{
struct epoll_event event;
event.events = EPOLLOUT | EPOLLET | EPOLLERR;
event.data.fd = sockfd;
epoll_ctl(epoll_fd,EPOLL_CTL_MOD,sockfd,&event);
}
else if( events[i].events & EPOLLOUT)
{
struct epoll_event event;
event.events = EPOLLIN | EPOLLET | EPOLLERR;
event.data.fd = sockfd;
epoll_ctl(epoll_fd,EPOLL_CTL_MOD,sockfd,&event);
}
else if (events[i].events & EPOLLERR)
{
close_conn(epoll_fd,sockfd);
}
}
}
}
开发者ID:fisheuler,项目名称:push,代码行数:52,代码来源:client.c
示例12: fatalSys
/**********************************************************************
*%FUNCTION: fatalSys
*%ARGUMENTS:
* str -- error message
*%RETURNS:
* Nothing
*%DESCRIPTION:
* Prints a message plus the errno value to stderr and syslog and exits.
*
***********************************************************************/
void
fatalSys(char const *str)
{
char buf[1024];
int i = errno;
sprintf(buf, "%.256s: %.256s", str, strerror(i));
printErr(buf);
sprintf(buf, "RP-PPPoE: %.256s: %.256s", str, strerror(i));
sendPADT(conn, buf);
close_conn(0);
cleanup_conn();
exit(1);
}
开发者ID:andy-padavan,项目名称:rt-n56u,代码行数:23,代码来源:plugin.c
示例13: failover_server
/* Returns 1 if a failover server candidate is available.
Close connection and return 0 if none was found.
*/
int failover_server(int conn)
{
int server = conns[conn].server;
DEBUG(2, "failover_server(%d): server = %d", conn, server);
if (server_alg & ALG_STUBBORN) {
DEBUG(2, "Won't failover because we are stubborn");
close_conn(conn);
return 0;
}
if (server == ABUSE_SERVER) {
DEBUG(2, "Won't failover from abuse server (%d)", abuse_server);
close_conn(conn);
return 0;
}
if (server == EMERGENCY_SERVER) {
DEBUG(2, "Already using emergency server (%d), won't fail over", emerg_server);
close_conn(conn);
return 0;
}
if (conns[conn].upfd != -1) {
close(conns[conn].upfd);
conns[conn].upfd = -1;
}
/* there needs to be at least two regular servers in order to fail over to something else */
/* and if we couldn't find a candidate for initial_server, we're not going to find one now */
if (nservers > 1 && server != NO_SERVER) {
DEBUG(2, "Trying to find failover server. server = %d, initial = %d, nservers = %d", server, conns[conn].initial, nservers);
do {
server = (server+1) % nservers;
DEBUG(2, "Intend to try server %d", server);
if (try_server(server, conn)) return 1;
} while (server != conns[conn].initial);
}
DEBUG(1, "using emergency server, remember to reset flag");
emergency = 1;
if (try_server(emerg_server, conn)) return 1;
close_conn(conn);
return 0;
}
开发者ID:AlexanderS,项目名称:pen,代码行数:42,代码来源:server.c
示例14: pxy_http_epollout
static int pxy_http_epollout(int fd, void * private_data)
{
con_t * con = (con_t *)private_data;
int ret;
int retlen;
UNUSED_ARGUMENT(fd);
if (CHECK_CON_FLAG(con, CONF_SYN_SENT)) {
UNSET_CON_FLAG(con, CONF_SYN_SENT);
retlen=sizeof(ret);
if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&ret,
(socklen_t *)&retlen)) {
DBG_LOG(MSG, MOD_PROXYD, "getsockopt(fd=%d) failed, errno=%d", fd, errno);
close_conn(fd);
return TRUE;
}
if(ret) {
DBG_LOG(MSG, MOD_PROXYD, "connect(fd=%d) failed, ret=%d", fd, ret);
close_conn(fd);
return TRUE;
}
/*
* When one of the fd add to epollin event fail, close fd and peer_fd.
*/
if ((pxy_NM_add_event_epollin(fd)==FALSE)
|| (pxy_NM_add_event_epollin(con->peer_fd)==FALSE)) {
close_conn(fd);
}
}
else {
/* Resent data */
forward_data_to_peer(con);
}
return TRUE;
}
开发者ID:skizhak,项目名称:open-media-flow-controller,代码行数:38,代码来源:pxy_tunnel.c
示例15: run_ftp
/* -------------------initiate ftp server-------------------
*/
int run_ftp(int port)
{
memset(&listen_conn, 0, sizeof(connection));
listen_conn.saddr.sin_port = htons(port);
if (create_listen_socket(&listen_conn) < 0) {
printlog("%s","create_listen_socket FAILED\n");
exit(1);
}
for (;;) {
if (accept_connection( &listen_conn, &sconn) < 0) {
printlog("%s","accept_connection FAILED\n");
continue;
}
signal(SIGCHLD, SIG_IGN);
if (fork() == 0) {
close_conn(listen_conn);
status = CONNECTED;
send_greetings();
command_loop();
close_conn(sconn);
return 0;
}
close_conn(sconn);
}
return 0;
}
开发者ID:vikasdesai,项目名称:VD-ftp-server,代码行数:40,代码来源:server.c
示例16: call_rack_app
static void
call_rack_app(client_t *client, picoev_loop* loop)
{
int ret;
if(!process_rack_app(client)){
//Internal Server Error
client->bad_request_code = 500;
send_error_page(client);
close_conn(client, loop);
return;
}
ret = response_start(client);
/* printf("response_start done: %d\n", ret); */
switch(ret){
case -1:
// Internal Server Error
client->bad_request_code = 500;
send_error_page(client);
close_conn(client, loop);
return;
case 0:
// continue
// set callback
#ifdef DEBUG
printf("set write callback %d \n", ret);
#endif
//clear event
picoev_del(loop, client->fd);
picoev_add(loop, client->fd, PICOEV_WRITE, WRITE_TIMEOUT_SECS, w_callback, (void *)client);
return;
default:
// send OK
close_conn(client, loop);
}
}
开发者ID:henteko,项目名称:bossan,代码行数:36,代码来源:bossan_ext.c
示例17: close_client
void
close_client(int sfds)
{
struct batch_request *preq;
close_conn(sfds); /* close the connection */
preq = (struct batch_request *)GET_NEXT(svr_requests);
while (preq) { /* list of outstanding requests */
if (preq->rq_conn == sfds)
preq->rq_conn = -1;
if (preq->rq_orgconn == sfds)
preq->rq_orgconn = -1;
preq = (struct batch_request *)GET_NEXT(preq->rq_link);
}
}
开发者ID:borlesanket,项目名称:pbspro-1,代码行数:15,代码来源:process_request.c
示例18: http_sent
static err_t
http_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
{
struct http_state *http;
http = arg;
http->retries = 0;
if ((http->sendbuffer_read != http->sendbuffer_write) || (http->state_server != HTTPD_SERVER_CLOSE))
send_data(pcb, http);
else
close_conn(pcb, http);
return ERR_OK;
}
开发者ID:HEATHlabs,项目名称:cheapla,代码行数:16,代码来源:httpd.c
示例19: printf
void service::process()
{
HTTP_CODE read_ret=process_read();
printf("process() read_ret=%d\n",read_ret);
if(read_ret==NO_REQUEST)
{
modfd(m_epollfd,m_sockfd,EPOLLIN);
return;
}
bool write_ret=process_write(read_ret);
if(!write_ret)
{
close_conn();
}
modfd(m_epollfd,m_sockfd,EPOLLOUT);
}
开发者ID:c5395348,项目名称:webserver,代码行数:16,代码来源:service.cpp
示例20: sigint_handler
void sigint_handler(int sig)
{
int status;
printf("Cleaning up...\n");
close_conn(conn_hdls.fp_ptr, conn_hdls.conn_ptr);
if (conn_hdls.htsock_ptr != NULL)
{
status = close(*(conn_hdls.htsock_ptr));
PRINTV("Closing socket (returned code: %d)\n", status);
}
free_am();
exit(EXIT_FAILURE);
}
开发者ID:ledge-c,项目名称:http_cp,代码行数:16,代码来源:htfile.c
注:本文中的close_conn函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论