int ProxySvr::loop() { int ret = -1; char msg[1024] ={0}; int errnum = 0; while(1) { loop_proc(); ret = zmq_poll (m_items.items, m_items.cnt, m_loopinteval_milliseconds); if(ret < 0) { errnum = errno ; switch(errnum) { case ETERM: // may be one MQ context was terminated LOG("may be one MQ context was terminated"); break; case EFAULT: //The provided items was not valid LOG("The provided items was not valid"); break; case EINTR: //The operation was interrupted by delivery of a signal before any events were available. LOG("The operation was interrupted by delivery of a signal before any events were available"); break; } } else if(ret == 0) { continue; } for(int i = 0 ; i < m_item_num , ret > 0 ; i++ ) { if (m_items.items[i].revents & ZMQ_POLLIN) { ret--; int size = zmq_recv(m_items.items[i].socket , msg, sizeof(msg), 0); if ( size != -1 ) { handle_pkg(&(m_items.items[i]), m_items.name[i], msg, size); } } } } return 0; }
void helix_tail(long k, long n, long **bs_1, long **bs_2, long *nsub, long *bs_sub, char *ChainID, long **seidx, long *loop, long *yes) /* get the residue number and tell if is a loop. n1 increases and n2 decrease. */ { long n1,n2; *yes = 0; if((bs_1[k][n] > bs_1[k][n-1] && bs_2[k][n] < bs_2[k][n-1])&& (bs_2[k][n] > bs_1[k][n])){ n1=bs_1[k][n]; n2=bs_2[k][n]; loop_proc (k, n1,n2, nsub, bs_sub, ChainID,seidx, yes); } else if((bs_2[k][n] > bs_2[k][n-1] && bs_1[k][n] < bs_1[k][n-1])&& (bs_1[k][n] > bs_2[k][n])){ n1=bs_2[k][n]; n2=bs_1[k][n]; loop_proc (k, n1,n2, nsub, bs_sub, ChainID,seidx, yes); } if(*yes>0){ if(n1>n2){ loop[2] = n1-1; loop[1] = n2+1; } else{ loop[1] = n1+1; loop[2] = n2-1; } /* printf(" A loop is found at the tail of helix %4d %4d%4d \n", k,loop[1],loop[2]); */ } }