Example #1
0
int getmessage (int interval)
{
    int             key = 0;
    ULONG           posted;

    if (que_n() > 0) return que_get ();
    
    // with interval == 0, we only check for keys in buffer
    if (interval == 0)
    {
        key = 0;
    }
    else if (interval > 0)
    {
        DosResetEventSem (hev_NewMessage, &posted);
        DosWaitEventSem (hev_NewMessage, interval);
        key = que_get ();
    }
    else if (interval < 0)
    {
        DosResetEventSem (hev_NewMessage, &posted);
        DosWaitEventSem (hev_NewMessage, SEM_INDEFINITE_WAIT);
        key = que_get ();
    }
    return key;
}
Example #2
0
void Jop::scan()
{
  char *command;
  int sts;

  sts = que_get( &command);
  while ( ODD(sts))
  {
    printf( "Jop received : %s\n", command);
    if ( command_cb)
      (command_cb)( parent_ctx, command);
    que_free( command);
    sts = que_get( &command);
  }
}
Example #3
0
void* handle_request(void* arg)
{
	pfactory_t pf=(pfactory_t)arg;
	pque_t pq=&pf->s_que;
	pnode_t pget;
	while(1)
	{
		pthread_mutex_lock(&pq->q_mutex);
		if(pq->size == 0)
		{
			pthread_cond_wait(&pf->cond,&pq->q_mutex);
		}
		que_get(pq,&pget);
		pthread_mutex_unlock(&pq->q_mutex);
		send_file(pget->sockfd);
		free(pget);		
	}
}