示例#1
0
static void
interval_timer_event( void *user_data ) {
  UNUSED( user_data );

  struct timespec now;
  dlist_element *dlist, *next;
  probe_timer_entry *entry;
  for ( dlist = probe_timer_table->next; dlist != NULL; dlist = next ) {
    next = dlist->next;
    entry = dlist->data;
    get_current_time( &now );
    if ( timespec_le( &( entry->expires ), &now ) ) {
      if ( dlist == probe_timer_last ) {
        probe_timer_last = dlist->prev;
      }
      delete_dlist_element( dlist );
      probe_request( entry, PROBE_TIMER_EVENT_TIMEOUT, 0, 0 );
    } else {
#if 0
      set_interval_timer();
#endif
      return;
    }
  }
}
示例#2
0
文件: d2mced.c 项目: ffbli666/D2MCE
void demon_receiver(int sockfd){
    ssize_t recv_len;
    struct sockaddr_in recv_addr;
	socklen_t len=sizeof(recv_addr);
	unsigned short *msg_type;
	void *recvbuf = malloc(D2MCED_BUFF_SIZE);	//recv buf
	
	while(1) {
      	recv_len = recvfrom(sockfd, recvbuf, D2MCED_BUFF_SIZE, 0, (struct sockaddr *) &recv_addr, &len);
		msg_type = (unsigned short*)recvbuf;
		//check the require, and data length to process
		if( *msg_type == MSG_JOIN_REQ && recv_len == (sizeof(struct join_s2d_req)
			+((struct join_s2d_req*)recvbuf)->app_len+((struct join_s2d_req*)recvbuf)->group_len)) {

			join_request(recvbuf, sockfd, recv_addr);
		}
		else if(*msg_type == MSG_FINALIZE && recv_len == sizeof(struct finalize_s2d_req)) {
			finalize_request(recvbuf, sockfd, recv_addr);
		}
		else if(*msg_type == MSG_PROBE_REQ 	&& recv_len == (sizeof(struct probe_s2d_req)
				+((struct probe_s2d_req*)recvbuf)->app_len+((struct probe_s2d_req*)recvbuf)->group_len)) {	
			probe_request(recvbuf, sockfd, recv_addr);				
		}
		else if(*msg_type == MSG_NEWMAIN_MANAGER && recv_len == (sizeof(struct main_s2d_req)
			+((struct main_s2d_req*)recvbuf)->app_len+((struct main_s2d_req*)recvbuf)->group_len)) {
			new_manager_request(recvbuf, sockfd, recv_addr);
		}
		//init data
		msg_type = 0;
	}
	free(recvbuf);
    close(sockfd);
}