当前位置: 首页>>代码示例>>C++>>正文


C++ close_conn函数代码示例

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


在下文中一共展示了close_conn函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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


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