1 /* $Id: gduutil.cpp,v 1.6 2006-09-07 12:12:21 adam Exp $
2 Copyright (c) 2005-2006, 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_gdu = metaproxy_1::gdu;
21 std::ostream& std::operator<<(std::ostream& os, Z_GDU& zgdu)
23 if (zgdu.which == Z_GDU_Z3950)
24 os << "Z3950" << " " << *(zgdu.u.z3950) ;
25 else if (zgdu.which == Z_GDU_HTTP_Request)
26 os << "HTTP_Request" << " " << *(zgdu.u.HTTP_Request);
27 else if (zgdu.which == Z_GDU_HTTP_Response)
28 os << "HTTP_Response" << " " << *(zgdu.u.HTTP_Response);
34 std::ostream& std::operator<<(std::ostream& os, Z_HTTP_Request& httpreq)
36 os << httpreq.method << " ";
42 std::ostream& std::operator<<(std::ostream& os, Z_HTTP_Response& httpres)
44 os << httpres.code << " ";
45 os << httpres.content_len;
49 std::ostream& std::operator<<(std::ostream& os, Z_Records & rs)
52 case Z_Records_DBOSD :
55 os << *(rs.u.nonSurrogateDiagnostic);
57 case Z_Records_multipleNSD:
58 os << "Z_Records_multipleNSD";
59 //os << *(rs.u.multipleNonSurDiagnostics);
68 std::ostream& std::operator<<(std::ostream& os, Z_DiagRec& dr)
71 case Z_DiagRec_defaultFormat:
72 os << *(dr.u.defaultFormat);
74 case Z_DiagRec_externallyDefined :
75 os << "Z_DiagRec_externallyDefined";
84 std::ostream& std::operator<<(std::ostream& os, Z_DefaultDiagFormat& ddf)
86 os << *(ddf.condition) << " ";
88 case Z_DefaultDiagFormat_v2Addinfo:
89 os << ddf.u.v2Addinfo;
91 case Z_DefaultDiagFormat_v3Addinfo:
92 os << ddf.u.v3Addinfo;
95 os << "Z_DefaultDiagFormat" ;
101 std::ostream& std::operator<<(std::ostream& os, Z_APDU& zapdu)
103 switch(zapdu.which) {
105 case Z_APDU_initRequest:
106 os << "initRequest" << " ";
110 = zapdu.u.initRequest;
112 Z_IdAuthentication *a = ir->idAuthentication;
113 if (a && a->which == Z_IdAuthentication_idPass )
114 os << a->u.idPass->userId << " ";
115 //<< ":" << a->u.idPass->groupId << " ";
119 std::list<std::string> vhosts;
120 mp::util::get_vhost_otherinfo(ir->otherInfo, vhosts);
122 copy(vhosts.begin(), vhosts.end(),
123 ostream_iterator<string>(os, " "));
128 os << (ir->implementationId) << " "
129 //<< ir->referenceId << " "
130 << (ir->implementationName) << " "
131 << (ir->implementationVersion);
134 case Z_APDU_initResponse:
135 os << "initResponse" << " ";
138 = zapdu.u.initResponse;
141 << (ir->implementationId) << " "
142 //<< ir->referenceId << " "
143 << (ir->implementationName) << " "
144 << (ir->implementationVersion) << " ";
149 case Z_APDU_searchRequest:
150 os << "searchRequest" << " ";
153 = zapdu.u.searchRequest;
155 for (int i = 0; i < sr->num_databaseNames; i++)
157 os << sr->databaseNames[i];
158 if (i+1 == sr->num_databaseNames)
164 WRBUF wr = wrbuf_alloc();
165 yaz_query_to_wrbuf(wr, sr->query);
170 case Z_APDU_searchResponse:
171 os << "searchResponse" << " ";
174 = zapdu.u.searchResponse;
175 if (*(sr->searchStatus))
177 << *(sr->resultCount) << " "
178 //<< sr->referenceId << " "
179 << *(sr->numberOfRecordsReturned) << " "
180 << *(sr->nextResultSetPosition);
183 os << "DIAG " << *(sr->records);
188 case Z_APDU_presentRequest:
189 os << "presentRequest" << " ";
191 Z_PresentRequest *pr = zapdu.u.presentRequest;
192 os << pr->resultSetId << " "
193 //<< pr->referenceId << " "
194 << *(pr->resultSetStartPoint) << " "
195 << *(pr->numberOfRecordsRequested);
198 case Z_APDU_presentResponse:
199 os << "presentResponse" << " ";
201 Z_PresentResponse *pr
202 = zapdu.u.presentResponse;
203 if (!*(pr->presentStatus))
206 //<< pr->referenceId << " "
207 << *(pr->numberOfRecordsReturned) << " "
208 << *(pr->nextResultSetPosition);
211 os << "DIAG " << *(pr->records);
215 //os << "DIAG" << " "
217 //<< pr->referenceId << " "
218 //<< *(pr->numberOfRecordsReturned) << " "
219 //<< *(pr->nextResultSetPosition);
222 case Z_APDU_deleteResultSetRequest:
223 os << "deleteResultSetRequest";
225 case Z_APDU_deleteResultSetResponse:
226 os << "deleteResultSetResponse";
228 case Z_APDU_accessControlRequest:
229 os << "accessControlRequest";
231 case Z_APDU_accessControlResponse:
232 os << "accessControlResponse";
234 case Z_APDU_resourceControlRequest:
235 os << "resourceControlRequest";
237 case Z_APDU_resourceControlResponse:
238 os << "resourceControlResponse";
240 case Z_APDU_triggerResourceControlRequest:
241 os << "triggerResourceControlRequest";
243 case Z_APDU_resourceReportRequest:
244 os << "resourceReportRequest";
246 case Z_APDU_resourceReportResponse:
247 os << "resourceReportResponse";
249 case Z_APDU_scanRequest:
250 os << "scanRequest" << " ";
253 = zapdu.u.scanRequest;
255 for (int i = 0; i < sr->num_databaseNames; i++)
257 os << sr->databaseNames[i];
258 if (i+1 == sr->num_databaseNames)
264 os << *(sr->numberOfTermsRequested) << " "
265 << *(sr->preferredPositionInResponse) << " "
266 << *(sr->stepSize) << " ";
268 WRBUF wr = wrbuf_alloc();
269 yaz_scan_to_wrbuf(wr, sr->termListAndStartPoint, VAL_NONE);
274 case Z_APDU_scanResponse:
275 os << "scanResponse" << " ";
278 = zapdu.u.scanResponse;
279 if (!*(sr->scanStatus))
281 //<< *(sr->scanStatus) << " "
282 << *(sr->numberOfEntriesReturned) << " "
283 //<< sr->referenceId << " "
284 << *(sr->positionOfTerm) << " "
285 << *(sr->stepSize) << " ";
288 << *(sr->scanStatus) << " ";
290 switch (*(sr->scanStatus)){
294 case Z_Scan_partial_1:
297 case Z_Scan_partial_2:
300 case Z_Scan_partial_3:
303 case Z_Scan_partial_4:
306 case Z_Scan_partial_5:
316 os << " " << *(sr->numberOfEntriesReturned);
320 case Z_APDU_sortRequest:
321 os << "sortRequest" << " ";
323 case Z_APDU_sortResponse:
324 os << "sortResponse" << " ";
326 case Z_APDU_segmentRequest:
327 os << "segmentRequest" << " ";
329 case Z_APDU_extendedServicesRequest:
330 os << "extendedServicesRequest" << " ";
332 Z_ExtendedServicesRequest *er
333 = zapdu.u.extendedServicesRequest;
335 switch(*(er->function))
337 case Z_ExtendedServicesRequest_create:
340 case Z_ExtendedServicesRequest_delete:
343 case Z_ExtendedServicesRequest_modify:
351 os << " " << er->userId ;
356 os << " " << er->packageName;
361 os << " " << er->description;
366 case Z_APDU_extendedServicesResponse:
367 os << "extendedServicesResponse" << " ";
369 Z_ExtendedServicesResponse *er
370 = zapdu.u.extendedServicesResponse;
372 switch (*(er->operationStatus)){
373 case Z_ExtendedServicesResponse_done:
376 case Z_ExtendedServicesResponse_accepted:
379 case Z_ExtendedServicesResponse_failure:
380 if (er->num_diagnostics)
381 os << "DIAG " << **(er->diagnostics);
391 os << "close" << " ";
396 os << *(c->closeReason) << " ";
397 switch (*(c->closeReason)) {
398 case Z_Close_finished:
401 case Z_Close_shutdown:
404 case Z_Close_systemProblem:
405 os << "systemProblem";
407 case Z_Close_costLimit:
410 case Z_Close_resources:
413 case Z_Close_securityViolation:
414 os << "securityViolation";
416 case Z_Close_protocolError:
417 os << "protocolError";
419 case Z_Close_lackOfActivity:
422 case Z_Close_peerAbort:
425 case Z_Close_unspecified:
432 if (c->diagnosticInformation)
433 os << " " << c->diagnosticInformation;
436 case Z_APDU_duplicateDetectionRequest:
437 os << "duplicateDetectionRequest";
439 case Z_APDU_duplicateDetectionResponse:
440 os << "duplicateDetectionResponse";
454 * indent-tabs-mode: nil
455 * c-file-style: "stroustrup"
457 * vim: shiftwidth=4 tabstop=8 expandtab