version 1.29, 1996/08/05 21:47:57
|
version 1.30, 1996/08/19 18:31:54
|
Line 56 typedef struct _Robot {
|
Line 56 typedef struct _Robot {
|
HTRequest * timeout; /* Until we get a server eventloop */ |
HTRequest * timeout; /* Until we get a server eventloop */ |
HTParentAnchor * anchor; |
HTParentAnchor * anchor; |
int depth; /* How deep is our tree */ |
int depth; /* How deep is our tree */ |
|
int cnt; /* Count of requests */ |
HTList * hyperdoc; /* List of our HyperDoc Objects */ |
HTList * hyperdoc; /* List of our HyperDoc Objects */ |
HTList * htext; /* List of our HText Objects */ |
HTList * htext; /* List of our HText Objects */ |
struct timeval * tv; /* Timeout on socket */ |
struct timeval * tv; /* Timeout on socket */ |
Line 162 PRIVATE Robot * Robot_new (void)
|
Line 163 PRIVATE Robot * Robot_new (void)
|
me->tv->tv_sec = DEFAULT_TIMEOUT; |
me->tv->tv_sec = DEFAULT_TIMEOUT; |
me->cwd = HTGetCurrentDirectoryURL(); |
me->cwd = HTGetCurrentDirectoryURL(); |
me->output = OUTPUT; |
me->output = OUTPUT; |
|
me->cnt = 1; |
|
|
/* We keep an extra timeout request object for the timeout_handler */ |
/* We keep an extra timeout request object for the timeout_handler */ |
me->timeout = HTRequest_new(); |
me->timeout = HTRequest_new(); |
Line 217 PRIVATE HTRequest * Thread_new (Robot *
|
Line 219 PRIVATE HTRequest * Thread_new (Robot *
|
if (mr->flags & MR_PREEMPTIVE) HTRequest_setPreemptive(newreq, YES); |
if (mr->flags & MR_PREEMPTIVE) HTRequest_setPreemptive(newreq, YES); |
HTRequest_addRqHd(newreq, HT_C_HOST); |
HTRequest_addRqHd(newreq, HT_C_HOST); |
HTRequest_setMethod(newreq, method); |
HTRequest_setMethod(newreq, method); |
|
mr->cnt++; |
return newreq; |
return newreq; |
} |
} |
|
|
Line 224 PRIVATE BOOL Thread_delete (Robot * mr,
|
Line 227 PRIVATE BOOL Thread_delete (Robot * mr,
|
{ |
{ |
if (mr && request) { |
if (mr && request) { |
HTRequest_delete(request); |
HTRequest_delete(request); |
|
mr->cnt--; |
return YES; |
return YES; |
} |
} |
return NO; |
return NO; |
Line 281 PRIVATE void VersionInfo (void)
|
Line 285 PRIVATE void VersionInfo (void)
|
PRIVATE int terminate_handler (HTRequest * request, void * param, int status) |
PRIVATE int terminate_handler (HTRequest * request, void * param, int status) |
{ |
{ |
Robot * mr = (Robot *) HTRequest_context(request); |
Robot * mr = (Robot *) HTRequest_context(request); |
if (mr->logfile) HTLog_add(request, status); |
|
Thread_delete(mr, request); |
Thread_delete(mr, request); |
if (HTNet_isEmpty()) Cleanup(mr, 0); |
if (HTNet_isEmpty()) { |
|
if (SHOW_MSG) HTTrace("Robot....... Everything is finished...\n"); |
|
Cleanup(mr, 0); |
|
} |
|
if (SHOW_MSG) HTTrace("Robot....... %d outstanding requests\n", mr->cnt); |
return HT_OK; |
return HT_OK; |
} |
} |
|
|
Line 355 PUBLIC void HText_beginAnchor (HText * t
|
Line 362 PUBLIC void HText_beginAnchor (HText * t
|
if (SHOW_MSG) |
if (SHOW_MSG) |
HTTrace("loading at depth %d using HEAD\n", depth); |
HTTrace("loading at depth %d using HEAD\n", depth); |
HTRequest_setMethod(newreq, METHOD_HEAD); |
HTRequest_setMethod(newreq, METHOD_HEAD); |
HTRequest_setOutputFormat(newreq, WWW_MIME); |
HTRequest_setOutputFormat(newreq, WWW_DEBUG); |
} else { |
} else { |
if (SHOW_MSG) HTTrace("loading at depth %d\n", depth); |
if (SHOW_MSG) HTTrace("loading at depth %d\n", depth); |
} |
} |