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; }
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); } }
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); } }