Fix Metaproxy stops logging after check config failed MP-590
[metaproxy-moved-to-github.git] / src / gduutil.cpp
index 47b4eb1..b39fd28 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of Metaproxy.
-   Copyright (C) 2005-2012 Index Data
+   Copyright (C) Index Data
 
 Metaproxy is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -58,14 +58,14 @@ std::ostream& std::operator<<(std::ostream& os,  Z_GDU& zgdu)
 std::ostream& std::operator<<(std::ostream& os, Z_HTTP_Request& httpreq)
 {
     os << httpreq.method << " ";
-    os << httpreq.path;    
+    os << httpreq.path;
     return os;
 }
 
 std::ostream& std::operator<<(std::ostream& os, Z_HTTP_Response& httpres)
 {
     os << httpres.code << " ";
-    os << httpres.content_len;   
+    os << httpres.content_len;
     return os;
 }
 
@@ -80,16 +80,29 @@ std::ostream& std::operator<<(std::ostream& os, Z_Records & rs)
             os << *(rs.u.nonSurrogateDiagnostic);
         break;
     case Z_Records_multipleNSD:
-        os << "Z_Records_multipleNSD";
-        //os << *(rs.u.multipleNonSurDiagnostics);
+        os << *(rs.u.multipleNonSurDiagnostics);
         break;
     default:
         os << "Z_Records" ;
     }
-    
+
+    return os;
+}
+
+std::ostream& std::operator<<(std::ostream& os, Z_DiagRecs& dr)
+{
+    if (dr.num_diagRecs >= 1)
+    {
+        os << *dr.diagRecs[0];
+    }
+    else
+    {
+        os << "multipleNSD";
+    }
     return os;
 }
 
+
 std::ostream& std::operator<<(std::ostream& os, Z_DiagRec& dr)
 {
     switch (dr.which)
@@ -104,7 +117,7 @@ std::ostream& std::operator<<(std::ostream& os, Z_DiagRec& dr)
     default:
         os << "Z_DiagRec" ;
     }
-    
+
     return os;
 }
 
@@ -116,15 +129,19 @@ std::ostream& std::operator<<(std::ostream& os, Z_DefaultDiagFormat& ddf)
     switch (ddf.which)
     {
     case Z_DefaultDiagFormat_v2Addinfo:
+        os << "\"";
         os << ddf.u.v2Addinfo;
+        os << "\"";
         break;
     case Z_DefaultDiagFormat_v3Addinfo:
+        os << "\"";
         os << ddf.u.v3Addinfo;
+        os << "\"";
         break;
     default:
-        os << "Z_DefaultDiagFormat" ;
+        os << "-";
     }
-    
+
     return os;
 }
 
@@ -137,24 +154,29 @@ static void dump_opt_string(std::ostream& os, const char *s)
         os << "-";
 }
 
-static void dump_opt_int(std::ostream& os, const Odr_int *i)
+static void dump_opt_int_l(std::ostream& os, const Odr_int *i, const char *lead)
 {
-    os << " ";
+    os << lead;
     if (i)
         os << *i;
     else
         os << "-";
 }
 
+static void dump_opt_int(std::ostream& os, const Odr_int *i)
+{
+    dump_opt_int_l(os, i, " ");
+}
+
 std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
 {
     switch(zapdu.which) {
 
     case Z_APDU_initRequest:
         os << " " << "initRequest";
-                        
+
         {
-            Z_InitRequest *ir 
+            Z_InitRequest *ir
                 = zapdu.u.initRequest;
 
             Z_IdAuthentication *a = ir->idAuthentication;
@@ -164,17 +186,17 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
                 dump_opt_string(os, a->u.open);
             else
                 dump_opt_string(os, 0);
-            
+
             os << " ";
             std::list<std::string> vhosts;
             mp::util::get_vhost_otherinfo(ir->otherInfo, vhosts);
             if (vhosts.size()){
-                copy(vhosts.begin(), vhosts.end(), 
+                copy(vhosts.begin(), vhosts.end(),
                      ostream_iterator<string>(os, " "));
             }
             else
                 os << "-" ;
-            
+
             dump_opt_string(os, ir->implementationId);
             dump_opt_string(os, ir->implementationName);
             dump_opt_string(os, ir->implementationVersion);
@@ -183,7 +205,7 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
     case Z_APDU_initResponse:
         os << " " << "initResponse ";
         {
-            Z_InitResponse *ir 
+            Z_InitResponse *ir
                 = zapdu.u.initResponse;
             if (ir->result && *(ir->result))
             {
@@ -200,10 +222,10 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
         break;
     case Z_APDU_searchRequest:
         os << " " << "searchRequest" << " ";
-        { 
-            Z_SearchRequest *sr 
+        {
+            Z_SearchRequest *sr
                 = zapdu.u.searchRequest;
-                            
+
             for (int i = 0; i < sr->num_databaseNames; i++)
             {
                 os << sr->databaseNames[i];
@@ -217,19 +239,16 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
             if (sr->preferredRecordSyntax)
             {
                 char oid_name_str[OID_STR_MAX];
-                const char *oid_name = yaz_oid_to_string_buf(
+                os << yaz_oid_to_string_buf(
                     sr->preferredRecordSyntax, 0, oid_name_str);
-                
-                os << oid_name;
             }
             else
                 os << "-";
 
             os << " ";
-            WRBUF wr = wrbuf_alloc();
+            mp::wrbuf wr;
             yaz_query_to_wrbuf(wr, sr->query);
             os << wrbuf_cstr(wr);
-            wrbuf_destroy(wr);
         }
         break;
     case Z_APDU_searchResponse:
@@ -249,7 +268,7 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
             else
             {
                 dump_opt_int(os, sr->resultCount);
-                dump_opt_int(os, sr->numberOfRecordsReturned);
+                dump_opt_int_l(os, sr->numberOfRecordsReturned, " 1+");
                 dump_opt_int(os, sr->nextResultSetPosition);
             }
         }
@@ -260,13 +279,13 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
             Z_PresentRequest *pr = zapdu.u.presentRequest;
             dump_opt_string(os, pr->resultSetId);
             dump_opt_int(os, pr->resultSetStartPoint);
-            dump_opt_int(os, pr->numberOfRecordsRequested);
+            dump_opt_int_l(os, pr->numberOfRecordsRequested, "+");
             if (pr->preferredRecordSyntax)
             {
                 char oid_name_str[OID_STR_MAX];
                 const char *oid_name = yaz_oid_to_string_buf(
                     pr->preferredRecordSyntax, 0, oid_name_str);
-                    
+
                 os << " " << oid_name;
             }
             else
@@ -280,7 +299,7 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
     case Z_APDU_presentResponse:
         os << " " << "presentResponse" << " ";
         {
-            Z_PresentResponse *pr 
+            Z_PresentResponse *pr
                 = zapdu.u.presentResponse;
             if (!pr->presentStatus)
                 os << "Unknown";
@@ -342,9 +361,9 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
         break;
     case Z_APDU_scanRequest:
         os << " " << "scanRequest" << " ";
-        { 
+        {
             Z_ScanRequest *sr = zapdu.u.scanRequest;
-                        
+
             if (sr)
             {
                 for (int i = 0; i < sr->num_databaseNames; i++)
@@ -360,11 +379,10 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
                 os << " ";
                 if (sr->termListAndStartPoint)
                 {
-                    WRBUF wr = wrbuf_alloc();
-                    yaz_scan_to_wrbuf(wr, sr->termListAndStartPoint, 
+                    mp::wrbuf wr;
+                    yaz_scan_to_wrbuf(wr, sr->termListAndStartPoint,
                                       sr->attributeSet);
                     os << wrbuf_cstr(wr);
-                    wrbuf_destroy(wr);
                 }
                 else
                     os << "-";
@@ -425,8 +443,8 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
         break;
     case Z_APDU_extendedServicesRequest:
         os << " " << "extendedServicesRequest";
-        { 
-            Z_ExtendedServicesRequest *er 
+        {
+            Z_ExtendedServicesRequest *er
                 = zapdu.u.extendedServicesRequest;
             if (er)
             {
@@ -450,18 +468,18 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
                 }
                 else
                     os << " -";
-                    
-                
+
+
                 if (er->userId)
                     os << " " << er->userId ;
                 else
                     os << " -";
-                
+
                 if (er->packageName)
                     os << " " << er->packageName;
                 else
                     os << " -";
-                
+
                 if (er->description)
                     os << " " << er->description;
                 else
@@ -471,8 +489,8 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
         break;
     case Z_APDU_extendedServicesResponse:
         os << " " << "extendedServicesResponse";
-        { 
-            Z_ExtendedServicesResponse *er 
+        {
+            Z_ExtendedServicesResponse *er
                 = zapdu.u.extendedServicesResponse;
             if (er)
             {
@@ -504,7 +522,7 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
         break;
     case Z_APDU_close:
         os  << " " << "close" << " ";
-        { 
+        {
             Z_Close *c = zapdu.u.close;
             if (c)
             {
@@ -548,7 +566,7 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
                         os << "unknown";
                     }
                 }
-                
+
                 if (c->diagnosticInformation)
                     os << " " << c->diagnosticInformation;
             }
@@ -560,7 +578,7 @@ std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
     case Z_APDU_duplicateDetectionResponse:
         os << " " << "duplicateDetectionResponse";
         break;
-    default: 
+    default:
         os << " " << "Z_APDU " << "UNKNOWN";
     }