1 /* $Id: gduutil.cpp,v 1.19 2007-04-10 11:28:51 marc Exp $
2 Copyright (c) 2005-2007, Index Data.
4 See the LICENSE file for details
10 #include <yaz/wrbuf.h>
11 #include <yaz/querytowrbuf.h>
16 namespace mp = metaproxy_1;
18 // Doxygen doesn't like mp::gdu, so we use this instead
19 namespace mp_util = metaproxy_1::util;
24 std::ostream& std::operator<<(std::ostream& os, Z_GDU& zgdu)
26 if (zgdu.which == Z_GDU_Z3950)
30 os << *(zgdu.u.z3950);
32 else if (zgdu.which == Z_GDU_HTTP_Request)
35 if (zgdu.u.HTTP_Request)
36 os << " " << *(zgdu.u.HTTP_Request);
38 else if (zgdu.which == Z_GDU_HTTP_Response)
40 os << "HTTP_Response";
41 if (zgdu.u.HTTP_Response)
42 os << " " << *(zgdu.u.HTTP_Response);
49 std::ostream& std::operator<<(std::ostream& os, Z_HTTP_Request& httpreq)
51 os << httpreq.method << " ";
57 std::ostream& std::operator<<(std::ostream& os, Z_HTTP_Response& httpres)
59 os << httpres.code << " ";
60 os << httpres.content_len;
64 std::ostream& std::operator<<(std::ostream& os, Z_Records & rs)
67 case Z_Records_DBOSD :
70 if (rs.u.nonSurrogateDiagnostic)
71 os << *(rs.u.nonSurrogateDiagnostic);
73 case Z_Records_multipleNSD:
74 os << "Z_Records_multipleNSD";
75 //os << *(rs.u.multipleNonSurDiagnostics);
84 std::ostream& std::operator<<(std::ostream& os, Z_DiagRec& dr)
87 case Z_DiagRec_defaultFormat:
88 if (dr.u.defaultFormat)
89 os << *(dr.u.defaultFormat);
91 case Z_DiagRec_externallyDefined :
92 os << "Z_DiagRec_externallyDefined";
101 std::ostream& std::operator<<(std::ostream& os, Z_DefaultDiagFormat& ddf)
104 os << *(ddf.condition) << " ";
107 case Z_DefaultDiagFormat_v2Addinfo:
108 os << ddf.u.v2Addinfo;
110 case Z_DefaultDiagFormat_v3Addinfo:
111 os << ddf.u.v3Addinfo;
114 os << "Z_DefaultDiagFormat" ;
120 std::ostream& std::operator<<(std::ostream& os, Z_APDU& zapdu)
122 switch(zapdu.which) {
124 case Z_APDU_initRequest:
125 os << " " << "initRequest" << " ";
129 = zapdu.u.initRequest;
131 Z_IdAuthentication *a = ir->idAuthentication;
132 if (a && a->which == Z_IdAuthentication_idPass
133 && a->u.idPass->userId)
134 os << a->u.idPass->userId << " ";
135 //<< ":" << a->u.idPass->groupId << " ";
139 std::list<std::string> vhosts;
140 mp::util::get_vhost_otherinfo(ir->otherInfo, vhosts);
142 copy(vhosts.begin(), vhosts.end(),
143 ostream_iterator<string>(os, " "));
148 if (ir->implementationId)
149 os << (ir->implementationId) << " ";
150 //<< ir->referenceId << " "
151 if (ir->implementationName)
152 os<< (ir->implementationName) << " ";
153 if (ir->implementationVersion)
154 os << (ir->implementationVersion) << " ";
157 case Z_APDU_initResponse:
158 os << " " << "initResponse" << " ";
161 = zapdu.u.initResponse;
162 if (ir->result && *(ir->result)){
164 if (ir->implementationId)
165 os << (ir->implementationId) << " ";
166 //<< ir->referenceId << " "
167 if (ir->implementationName)
168 os<< (ir->implementationName) << " ";
169 if (ir->implementationVersion)
170 os << (ir->implementationVersion) << " ";
176 case Z_APDU_searchRequest:
177 os << " " << "searchRequest" << " ";
180 = zapdu.u.searchRequest;
182 for (int i = 0; i < sr->num_databaseNames; i++)
184 os << sr->databaseNames[i];
185 if (i+1 == sr->num_databaseNames)
191 WRBUF wr = wrbuf_alloc();
192 yaz_query_to_wrbuf(wr, sr->query);
193 os << wrbuf_cstr(wr);
197 case Z_APDU_searchResponse:
198 os << " " << "searchResponse" << " ";
201 = zapdu.u.searchResponse;
202 if (sr->searchStatus && *(sr->searchStatus))
206 os << " " << *(sr->resultCount);
209 //<< sr->referenceId << " "
210 if (sr->numberOfRecordsReturned)
211 os << " " << *(sr->numberOfRecordsReturned);
214 if (sr->nextResultSetPosition)
215 os << " " << *(sr->nextResultSetPosition);
221 os << "DIAG " << *(sr->records);
226 case Z_APDU_presentRequest:
227 os << " " << "presentRequest";
229 Z_PresentRequest *pr = zapdu.u.presentRequest;
231 os << " " << (pr->resultSetId);
234 //<< pr->referenceId << " "
235 if (pr->resultSetStartPoint)
236 os << " " << *(pr->resultSetStartPoint);
239 if (pr->numberOfRecordsRequested)
240 os << " " << *(pr->numberOfRecordsRequested);
243 if (pr->preferredRecordSyntax)
244 //os << " " << pr->preferredRecordSyntax;
245 os << " " <<(oid_getentbyoid(pr->preferredRecordSyntax))->desc;
248 const char * msg = 0;
249 if (pr->recordComposition
250 && (msg = mp_util::record_composition_to_esn(pr->recordComposition)))
256 case Z_APDU_presentResponse:
257 os << " " << "presentResponse" << " ";
259 Z_PresentResponse *pr
260 = zapdu.u.presentResponse;
261 if ((pr->presentStatus) && !*(pr->presentStatus))
264 //<< pr->referenceId << " "
265 if (pr->numberOfRecordsReturned)
266 os << " " << *(pr->numberOfRecordsReturned);
269 if (pr->nextResultSetPosition)
270 os << " " << *(pr->nextResultSetPosition);
276 os << "DIAG " << *(pr->records);
280 //os << "DIAG" << " "
282 //<< pr->referenceId << " "
283 //<< *(pr->numberOfRecordsReturned) << " "
284 //<< *(pr->nextResultSetPosition);
287 case Z_APDU_deleteResultSetRequest:
288 os << " " << "deleteResultSetRequest";
290 case Z_APDU_deleteResultSetResponse:
291 os << " " << "deleteResultSetResponse";
293 case Z_APDU_accessControlRequest:
294 os << " " << "accessControlRequest";
296 case Z_APDU_accessControlResponse:
297 os << " " << "accessControlResponse";
299 case Z_APDU_resourceControlRequest:
300 os << " " << "resourceControlRequest";
302 case Z_APDU_resourceControlResponse:
303 os << " " << "resourceControlResponse";
305 case Z_APDU_triggerResourceControlRequest:
306 os << " " << "triggerResourceControlRequest";
308 case Z_APDU_resourceReportRequest:
309 os << " " << "resourceReportRequest";
311 case Z_APDU_resourceReportResponse:
312 os << " " << "resourceReportResponse";
314 case Z_APDU_scanRequest:
315 os << " " << "scanRequest" << " ";
318 = zapdu.u.scanRequest;
322 for (int i = 0; i < sr->num_databaseNames; i++)
324 os << sr->databaseNames[i];
325 if (i+1 == sr->num_databaseNames)
330 if (sr->numberOfTermsRequested)
331 os << " " << *(sr->numberOfTermsRequested);
334 if (sr->preferredPositionInResponse)
335 os << " " << *(sr->preferredPositionInResponse);
339 os << " " << *(sr->stepSize);
343 if (sr->termListAndStartPoint)
345 WRBUF wr = wrbuf_alloc();
346 yaz_scan_to_wrbuf(wr, sr->termListAndStartPoint, VAL_NONE);
347 os << wrbuf_cstr(wr);
355 case Z_APDU_scanResponse:
356 os << " " << "scanResponse" << " ";
359 = zapdu.u.scanResponse;
362 if ((sr->scanStatus) && !*(sr->scanStatus))
365 //<< *(sr->scanStatus) << " "
366 if (sr->numberOfEntriesReturned)
367 os << " " << *(sr->numberOfEntriesReturned);
370 //<< sr->referenceId << " "
371 if (sr->positionOfTerm)
372 os << " " << *(sr->positionOfTerm);
376 os << " " << *(sr->stepSize);
384 os << " " << *(sr->scanStatus) << " ";
386 switch (*(sr->scanStatus)){
390 case Z_Scan_partial_1:
393 case Z_Scan_partial_2:
396 case Z_Scan_partial_3:
399 case Z_Scan_partial_4:
402 case Z_Scan_partial_5:
412 if (sr->numberOfEntriesReturned)
413 os << " " << *(sr->numberOfEntriesReturned);
420 case Z_APDU_sortRequest:
421 os << " " << "sortRequest" << " ";
423 case Z_APDU_sortResponse:
424 os << " " << "sortResponse" << " ";
426 case Z_APDU_segmentRequest:
427 os << " " << "segmentRequest" << " ";
429 case Z_APDU_extendedServicesRequest:
430 os << " " << "extendedServicesRequest";
432 Z_ExtendedServicesRequest *er
433 = zapdu.u.extendedServicesRequest;
439 switch(*(er->function))
441 case Z_ExtendedServicesRequest_create:
444 case Z_ExtendedServicesRequest_delete:
447 case Z_ExtendedServicesRequest_modify:
459 os << " " << er->userId ;
464 os << " " << er->packageName;
469 os << " " << er->description;
475 case Z_APDU_extendedServicesResponse:
476 os << " " << "extendedServicesResponse";
478 Z_ExtendedServicesResponse *er
479 = zapdu.u.extendedServicesResponse;
482 if (er->operationStatus)
485 switch (*(er->operationStatus)){
486 case Z_ExtendedServicesResponse_done:
489 case Z_ExtendedServicesResponse_accepted:
492 case Z_ExtendedServicesResponse_failure:
493 if (er->num_diagnostics)
494 os << "DIAG " << **(er->diagnostics);
508 os << " " << "close" << " ";
516 os << *(c->closeReason) << " ";
518 switch (*(c->closeReason)) {
519 case Z_Close_finished:
522 case Z_Close_shutdown:
525 case Z_Close_systemProblem:
526 os << "systemProblem";
528 case Z_Close_costLimit:
531 case Z_Close_resources:
534 case Z_Close_securityViolation:
535 os << "securityViolation";
537 case Z_Close_protocolError:
538 os << "protocolError";
540 case Z_Close_lackOfActivity:
541 os << "lackOfActivity";
543 case Z_Close_peerAbort:
546 case Z_Close_unspecified:
554 if (c->diagnosticInformation)
555 os << " " << c->diagnosticInformation;
559 case Z_APDU_duplicateDetectionRequest:
560 os << " " << "duplicateDetectionRequest";
562 case Z_APDU_duplicateDetectionResponse:
563 os << " " << "duplicateDetectionResponse";
566 os << " " << "Z_APDU " << "UNKNOWN";
578 * indent-tabs-mode: nil
579 * c-file-style: "stroustrup"
581 * vim: shiftwidth=4 tabstop=8 expandtab