示例#1
0
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;
}
示例#2
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]);
            */
    }
    
    
}