172{
173 switch(zapdu.which) {
174
175 case Z_APDU_initRequest:
176 os << " " << "initRequest";
177
178 {
179 Z_InitRequest *ir
180 = zapdu.u.initRequest;
181
182 Z_IdAuthentication *a = ir->idAuthentication;
183 if (a && a->which == Z_IdAuthentication_idPass)
185 else if (a && a->which == Z_IdAuthentication_open)
187 else
189
190 os << " ";
191 std::list<std::string> vhosts;
192 mp::util::get_vhost_otherinfo(ir->otherInfo, vhosts);
193 if (vhosts.size()){
194 copy(vhosts.begin(), vhosts.end(),
195 ostream_iterator<string>(os, " "));
196 }
197 else
198 os << "-" ;
199
203 }
204 break;
205 case Z_APDU_initResponse:
206 os << " " << "initResponse ";
207 {
208 Z_InitResponse *ir
209 = zapdu.u.initResponse;
210 if (ir->result && *(ir->result))
211 {
212 os << "OK";
213 }
214 else
215 {
216 os << "FAIL";
217 }
221 }
222 break;
223 case Z_APDU_searchRequest:
224 os << " " << "searchRequest" << " ";
225 {
226 Z_SearchRequest *sr
227 = zapdu.u.searchRequest;
228
229 for (int i = 0; i < sr->num_databaseNames; i++)
230 {
231 os << sr->databaseNames[i];
232 if (i+1 != sr->num_databaseNames)
233 os << "+";
234 }
235
237
238 os << " ";
239 if (sr->preferredRecordSyntax)
240 {
241 char oid_name_str[OID_STR_MAX];
242 os << yaz_oid_to_string_buf(
243 sr->preferredRecordSyntax, 0, oid_name_str);
244 }
245 else
246 os << "-";
247
248 os << " ";
249 mp::wrbuf wr;
250 yaz_query_to_wrbuf(wr, sr->query);
251 os << wrbuf_cstr(wr);
252 }
253 break;
254 case Z_APDU_searchResponse:
255 os << " " << "searchResponse ";
256 {
257 Z_SearchResponse *sr = zapdu.u.searchResponse;
258 if (!sr->searchStatus)
259 os << "Unknown";
260 else if (*sr->searchStatus)
261 os << "OK";
262 else
263 os << "Failure";
264 if (sr->records && sr->records->which != Z_Records_DBOSD)
265 {
266 os << " DIAG " << *sr->records;
267 }
268 else
269 {
273 }
274 }
275 break;
276 case Z_APDU_presentRequest:
277 os << " " << "presentRequest";
278 {
279 Z_PresentRequest *pr = zapdu.u.presentRequest;
283 if (pr->preferredRecordSyntax)
284 {
285 char oid_name_str[OID_STR_MAX];
286 const char *oid_name = yaz_oid_to_string_buf(
287 pr->preferredRecordSyntax, 0, oid_name_str);
288
289 os << " " << oid_name;
290 }
291 else
292 os << " -";
293 const char * msg = 0;
294 if (pr->recordComposition)
295 msg = mp_util::record_composition_to_esn(pr->recordComposition);
297 }
298 break;
299 case Z_APDU_presentResponse:
300 os << " " << "presentResponse" << " ";
301 {
302 Z_PresentResponse *pr
303 = zapdu.u.presentResponse;
304 if (!pr->presentStatus)
305 os << "Unknown";
306 else
307 {
308 switch (*pr->presentStatus)
309 {
310 case Z_PresentStatus_success:
311 os << "OK"; break;
312 case Z_PresentStatus_partial_1:
313 os << "Partial-1"; break;
314 case Z_PresentStatus_partial_2:
315 os << "Partial-2"; break;
316 case Z_PresentStatus_partial_3:
317 os << "Partial-3"; break;
318 case Z_PresentStatus_partial_4:
319 os << "Partial-4"; break;
320 case Z_PresentStatus_failure:
321 os << "Failure"; break;
322 default:
323 os << "Unknown"; break;
324 }
325 }
326 if (pr->records && pr->records->which != Z_Records_DBOSD)
327 os << " DIAG " << *pr->records;
328 else
329 {
332 }
333 }
334 break;
335 case Z_APDU_deleteResultSetRequest:
336 os << " " << "deleteResultSetRequest";
337 break;
338 case Z_APDU_deleteResultSetResponse:
339 os << " " << "deleteResultSetResponse";
340 break;
341 case Z_APDU_accessControlRequest:
342 os << " " << "accessControlRequest";
343 break;
344 case Z_APDU_accessControlResponse:
345 os << " " << "accessControlResponse";
346 break;
347 case Z_APDU_resourceControlRequest:
348 os << " " << "resourceControlRequest";
349 break;
350 case Z_APDU_resourceControlResponse:
351 os << " " << "resourceControlResponse";
352 break;
353 case Z_APDU_triggerResourceControlRequest:
354 os << " " << "triggerResourceControlRequest";
355 break;
356 case Z_APDU_resourceReportRequest:
357 os << " " << "resourceReportRequest";
358 break;
359 case Z_APDU_resourceReportResponse:
360 os << " " << "resourceReportResponse";
361 break;
362 case Z_APDU_scanRequest:
363 os << " " << "scanRequest" << " ";
364 {
365 Z_ScanRequest *sr = zapdu.u.scanRequest;
366
367 if (sr)
368 {
369 for (int i = 0; i < sr->num_databaseNames; i++)
370 {
371 os << sr->databaseNames[i];
372 if (i+1 != sr->num_databaseNames)
373 os << "+";
374 }
378
379 os << " ";
380 if (sr->termListAndStartPoint)
381 {
382 mp::wrbuf wr;
383 yaz_scan_to_wrbuf(wr, sr->termListAndStartPoint,
384 sr->attributeSet);
385 os << wrbuf_cstr(wr);
386 }
387 else
388 os << "-";
389 }
390 }
391 break;
392 case Z_APDU_scanResponse:
393 os << " " << "scanResponse" << " ";
394 {
395 Z_ScanResponse *sr = zapdu.u.scanResponse;
396 if (sr)
397 {
398 if (!sr->scanStatus)
399 os << "OK";
400 else
401 {
402 switch (*sr->scanStatus)
403 {
404 case Z_Scan_success:
405 os << "OK";
406 break;
407 case Z_Scan_partial_1:
408 os << "partial_1";
409 break;
410 case Z_Scan_partial_2:
411 os << "partial_2";
412 break;
413 case Z_Scan_partial_3:
414 os << "partial_3";
415 break;
416 case Z_Scan_partial_4:
417 os << "partial_4";
418 break;
419 case Z_Scan_partial_5:
420 os << "partial_5";
421 break;
422 case Z_Scan_failure:
423 os << "failure";
424 break;
425 default:
426 os << "unknown";
427 }
428 }
432 }
433 }
434 break;
435 case Z_APDU_sortRequest:
436 os << " " << "sortRequest" << " ";
437 break;
438 case Z_APDU_sortResponse:
439 os << " " << "sortResponse" << " ";
440 break;
441 case Z_APDU_segmentRequest:
442 os << " " << "segmentRequest" << " ";
443 break;
444 case Z_APDU_extendedServicesRequest:
445 os << " " << "extendedServicesRequest";
446 {
447 Z_ExtendedServicesRequest *er
448 = zapdu.u.extendedServicesRequest;
449 if (er)
450 {
451 if (er->function)
452 {
453 os << " ";
454 switch(*(er->function))
455 {
456 case Z_ExtendedServicesRequest_create:
457 os << "create";
458 break;
459 case Z_ExtendedServicesRequest_delete:
460 os << "delete";
461 break;
462 case Z_ExtendedServicesRequest_modify:
463 os << "modify";
464 break;
465 default:
466 os << "unknown";
467 }
468 }
469 else
470 os << " -";
471
472
473 if (er->userId)
474 os << " " << er->userId ;
475 else
476 os << " -";
477
478 if (er->packageName)
479 os << " " << er->packageName;
480 else
481 os << " -";
482
483 if (er->description)
484 os << " " << er->description;
485 else
486 os << " -";
487 }
488 }
489 break;
490 case Z_APDU_extendedServicesResponse:
491 os << " " << "extendedServicesResponse";
492 {
493 Z_ExtendedServicesResponse *er
494 = zapdu.u.extendedServicesResponse;
495 if (er)
496 {
497 if (er->operationStatus)
498 {
499 os << " ";
500 switch (*er->operationStatus)
501 {
502 case Z_ExtendedServicesResponse_done:
503 os << "OK";
504 break;
505 case Z_ExtendedServicesResponse_accepted:
506 os << "ACCEPT";
507 break;
508 case Z_ExtendedServicesResponse_failure:
509 if (er->num_diagnostics)
510 os << "DIAG " << **(er->diagnostics);
511 else
512 os << "ERROR";
513 break;
514 default:
515 os << "unknown";
516 }
517 }
518 else
519 os << " -";
520 }
521 }
522 break;
523 case Z_APDU_close:
524 os << " " << "close" << " ";
525 {
526 Z_Close *c = zapdu.u.close;
527 if (c)
528 {
529 if (c->closeReason)
530 {
531 os << *(c->closeReason) << " ";
532
533 switch (*c->closeReason)
534 {
535 case Z_Close_finished:
536 os << "finished";
537 break;
538 case Z_Close_shutdown:
539 os << "shutdown";
540 break;
541 case Z_Close_systemProblem:
542 os << "systemProblem";
543 break;
544 case Z_Close_costLimit:
545 os << "costLimit";
546 break;
547 case Z_Close_resources:
548 os << "resources";
549 break;
550 case Z_Close_securityViolation:
551 os << "securityViolation";
552 break;
553 case Z_Close_protocolError:
554 os << "protocolError";
555 break;
556 case Z_Close_lackOfActivity:
557 os << "lackOfActivity";
558 break;
559 case Z_Close_peerAbort:
560 os << "peerAbort";
561 break;
562 case Z_Close_unspecified:
563 os << "unspecified";
564 break;
565 default:
566 os << "unknown";
567 }
568 }
569
570 if (c->diagnosticInformation)
571 os << " " << c->diagnosticInformation;
572 }
573 }
574 break;
575 case Z_APDU_duplicateDetectionRequest:
576 os << " " << "duplicateDetectionRequest";
577 break;
578 case Z_APDU_duplicateDetectionResponse:
579 os << " " << "duplicateDetectionResponse";
580 break;
581 default:
582 os << " " << "Z_APDU " << "UNKNOWN";
583 }
584
585 return os;
586}
static void dump_opt_int(std::ostream &os, const Odr_int *i)
static void dump_opt_string(std::ostream &os, const char *s)
static void dump_opt_int_l(std::ostream &os, const Odr_int *i, const char *lead)