Esempio n. 1
0
void
syncthread0(void *a)
{
	Queue *q;
	Syncpath *s;

	threadsetname("syncthread");
	startclient();
	q = a;
	for(;;){
		s = qrecv(q);
		assert(s->state == SyncStart);
		syncstat(s);
		if(s->state == SyncError){
		Err:
			syncfinish(s);
			continue;
		}
		synctriage(s);
		if(s->state == SyncError)
			goto Err;
		if(s->triage != DoNothing)
			tralog("%P %s%s: [%$] [%$]", s->p, s->conflict ? "conflict " : "",
				workstr(s, s->triage), s->a.s, s->b.s);
		qsend(s->sync->triageq, s);
	}		
}
Esempio n. 2
0
//-------------------------------------------------------------------------
ssize_t irs_recv(idarpc_stream_t *irs, void *buf, size_t n, int timeout)
{
  if ( timeout != -1 && !irs_ready(irs, timeout) )
  {
    SET_SYSTEM_SPECIFIC_ERRNO(SYSTEM_SPECIFIC_TIMEOUT_ERROR);
    return -1; // no data
  }
  return qrecv(sock_from_irs(irs), buf, (int)n);
}