Beispiel #1
0
void
usnet_write_notify(usn_context_t *ctx, uint32_t fd)
{
   struct usn_write_ev ev;

   memset(&ev, 0, sizeof(ev));
   ev.h.type = TCP_TYPE;
   ev.h.event = USN_WRITE_EV;
   ev.h.length = sizeof(ev);
   ev.fd = fd;

#ifdef USE_ADAPTIVE_CONTROL
   usnet_shmmq_enqueue(ctx->ev_app2net_mq, time(0), &ev, sizeof(ev), ev.fd); 
#else
   usnet_shmmq_enqueue(ctx->ev_app2net_mq, 0, &ev, sizeof(ev), ev.fd); 
#endif

}
Beispiel #2
0
void    
usnet_raise_accept_event(usn_context_t *ctx, usn_tcb_t* tcb)
{  
   struct usn_accept_ev ev;
   
   memset(&ev, 0, sizeof(ev));
   ev.h.type = TCP_TYPE;
   ev.h.event = USN_ACCEPT_EV;
   ev.h.length = sizeof(ev);
   ev.fd = tcb->fd;

#ifdef USE_ADAPTIVE_CONTROL
   usnet_shmmq_enqueue(ctx->ev_net2app_mq, time(0), &ev, sizeof(ev), ev.fd); 
#else
   usnet_shmmq_enqueue(ctx->ev_net2app_mq, 0, &ev, sizeof(ev), ev.fd); 
#endif

}
Beispiel #3
0
void 
usnet_raise_error_event(usn_context_t *ctx, usn_tcb_t *tcb)
{        
   struct usn_error_ev ev;

   memset(&ev, 0, sizeof(ev));
   ev.h.type = TCP_TYPE;
   ev.h.event = USN_ERROR_EV;
   ev.h.length = sizeof(ev);
   ev.fd = tcb->fd;

   //usnet_tcpev_n2a_enqueue(ev.fd, (char*)&ev, sizeof(ev));
#ifdef USE_ADAPTIVE_CONTROL
   usnet_shmmq_enqueue(ctx->ev_net2app_mq, time(0), &ev, sizeof(ev), ev.fd); 
#else
   usnet_shmmq_enqueue(ctx->ev_net2app_mq, 0, &ev, sizeof(ev), ev.fd); 
#endif

/*
   if (stream->socket) {
      if (stream->socket->epoll & MTCP_EPOLLERR) {
         AddEpollEvent(mtcp->ep, 
               MTCP_EVENT_QUEUE, stream->socket, MTCP_EPOLLERR);
#if BLOCKING_SUPPORT
      } else if (!(stream->socket->opts & MTCP_NONBLOCK)) {
         if (!stream->on_rcv_br_list) {
            stream->on_rcv_br_list = TRUE;
            TAILQ_INSERT_TAIL(&mtcp->rcv_br_list, stream, rcvvar->rcv_br_link);
            mtcp->rcv_br_list_cnt++;
         }  
         if (!stream->on_snd_br_list) {
            stream->on_snd_br_list = TRUE;
            TAILQ_INSERT_TAIL(&mtcp->snd_br_list, stream, sndvar->snd_br_link);
            mtcp->snd_br_list_cnt++;
         }  
#endif
      } 
   } else {
      TRACE_EPOLL("Stream %d: Raising error without a socket!\n", stream->id);
   }
*/
}
Beispiel #4
0
void    
usnet_raise_connect_event(usn_context_t *ctx, usn_tcb_t* tcb)
{  
   struct usn_connect_ev ev;
   
   memset(&ev, 0, sizeof(ev));
   ev.h.type = TCP_TYPE;
   ev.h.event = USN_CONNECT_EV;
   ev.h.length = sizeof(ev);
   ev.fd = tcb->fd;
   ev.saddr = tcb->saddr;
   ev.sport = tcb->sport;
   ev.daddr = tcb->daddr;
   ev.dport = tcb->dport;

#ifdef USE_ADAPTIVE_CONTROL
   usnet_shmmq_enqueue(ctx->ev_net2app_mq, time(0), &ev, sizeof(ev), ev.fd); 
#else
   usnet_shmmq_enqueue(ctx->ev_net2app_mq, 0, &ev, sizeof(ev), ev.fd); 
#endif

}
Beispiel #5
0
int32
usnet_tcpev_n2a_enqueue(u_int32 fd, u_char type, u_char event, u_char *body, int32 len)
{
   usn_tcpin_pkg_t pkg;

   pkg.header.type = type;
   pkg.header.event = event;
   //pkg.header.len = (u_short)sizeof(pkg);
   pkg.header.len = sizeof(pkg);
   pkg.fd = fd;
  
   DEBUG("enqueue an event, type=%d, event=%d, fd=%d", type, event, fd);  
   usnet_shmmq_enqueue(g_tcpev_net2app_mq, time(0), &pkg, sizeof(pkg), fd); 

   return 0;
}
Beispiel #6
0
void
usnet_listen_net_handler(usn_context_t *ctx, char *data, int32_t len, uint32_t flow)
{
   struct usn_listen_ev *ev;
   usn_socket_t t;
   usn_socket_t *so;
   int ret = 0;


   if ( len < sizeof(*ev) )
      return;

   ev = (struct usn_listen_ev*)data;

   t.so_fd = ev->fd;
   so = CACHE_SEARCH(ctx->socket_cache,&t,usn_socket_t*);
   if ( so == 0 ) {
      ERROR(ctx->log,"not found socket, fd=%u",ev->fd);
      ev->result = -1;
      goto finish;
   }

   // register listen socket.
   ret = usnet_register_socket(ctx,so,ev->addr,ev->port,0,0);

   if ( ret < 0 ) {
      ERROR(ctx->log,"registering socket failed, fd=%u",ev->fd);
      ev->result = -2;
      goto finish;
   }
   ev->result = 0;

   ERROR(ctx->log,"registering socket, fd=%u, ret=%d",ev->fd, ret);

finish:
   usnet_shmmq_enqueue(ctx->ev_net2app_mq, time(0), ev, sizeof(*ev), flow);
   return;
}