Package logging of Z_GDU structs re-factored into own operator<<
[metaproxy-moved-to-github.git] / src / gduutil.cpp
1 /* $Id: gduutil.cpp,v 1.1 2006-08-29 10:06:31 marc Exp $
2    Copyright (c) 2005-2006, Index Data.
3
4    See the LICENSE file for details
5  */
6
7 #include "gduutil.hpp"
8
9 #include <yaz/wrbuf.h>
10 #include <yaz/querytowrbuf.h>
11
12 #include <iostream>
13
14 namespace mp = metaproxy_1;
15
16 // Doxygen doesn't like mp::gdu, so we use this instead
17 namespace mp_gdu = metaproxy_1::gdu;
18
19 std::ostream& std::operator<<(std::ostream& os,  Z_GDU& zgdu)
20 {
21     if (zgdu.which == Z_GDU_Z3950)
22         os << "Z3950" << " " << *(zgdu.u.z3950) ;
23     else if (zgdu.which == Z_GDU_HTTP_Request)
24         os << "HTTP_Request" << " ";
25     else if (zgdu.which == Z_GDU_HTTP_Response)
26         os << "HTTP_Response" << " ";
27     else
28         os << "Z_GDU" << " ";
29     return os;
30 }
31
32 std::ostream& std::operator<<(std::ostream& os,  Z_APDU& zapdu)
33 {
34     switch(zapdu.which) {
35
36     case Z_APDU_initRequest:
37         os << "initRequest" << " "
38             << "OK" << " ";
39                         
40         {
41             Z_InitRequest *ir 
42                 = zapdu.u.initRequest;
43             os 
44                 << (ir->implementationId) << " "
45                 //<< ir->referenceId << " "
46                 << (ir->implementationName) << " "
47                 << (ir->implementationVersion) << " ";
48         }
49         break;
50                     case Z_APDU_initResponse:
51                         os<< "initResponse" << " ";
52                         {
53                             Z_InitResponse *ir 
54                                 = zapdu.u.initResponse;
55                             if (*(ir->result))
56                                 os 
57                                     << "OK" << " "
58                                     << (ir->implementationId) << " "
59                                     //<< ir->referenceId << " "
60                                     << (ir->implementationName) << " "
61                                     << (ir->implementationVersion) << " ";
62                             else
63                                 os 
64                                     << "ERROR" << " "
65                                     << "- - -" << " ";
66
67                          }
68                         break;
69     case Z_APDU_searchRequest:
70         os << "searchRequest" << " "
71             << "OK" << " ";
72         { 
73             Z_SearchRequest *sr 
74                 = zapdu.u.searchRequest;
75                             
76             for (int i = 0; i < sr->num_databaseNames; i++)
77             {
78                 os << sr->databaseNames[i];
79                 if (i+1 ==  sr->num_databaseNames)
80                     os<< " ";
81                 else
82                     os<< "+";
83             }
84                          
85             WRBUF wr = wrbuf_alloc();
86             yaz_query_to_wrbuf(wr, sr->query);
87             os << wrbuf_buf(wr) << " ";
88             wrbuf_free(wr, 1);
89         }
90         break;
91                     case Z_APDU_searchResponse:
92                         os<< "searchResponse" << " ";
93                         {
94                             Z_SearchResponse *sr 
95                                 = zapdu.u.searchResponse;
96                             if (*(sr->searchStatus))
97                                 os 
98                                     << "OK" << " "
99                                     << *(sr->resultCount) << " "
100                                     //<< sr->referenceId << " "
101                                     << *(sr->numberOfRecordsReturned) << " "
102                                     << *(sr->nextResultSetPosition) << " ";
103                             else
104                                 os 
105                                     << "ERROR" << " "
106                                     << "- - -" << " ";
107
108                          }
109                         //os<< wrbuf_buf(wr) << " ";
110                         break;
111     case Z_APDU_presentRequest:
112         os << "presentRequest" << " "
113             << "OK" << " "; 
114         {
115             Z_PresentRequest *pr = zapdu.u.presentRequest;
116             os << pr->resultSetId << " "
117                 //<< pr->referenceId << " "
118                << *(pr->resultSetStartPoint) << " "
119                << *(pr->numberOfRecordsRequested) << " ";
120         }
121         break;
122                    case Z_APDU_presentResponse:
123                         os<< "presentResponse" << " ";
124                         {
125                             Z_PresentResponse *pr 
126                                 = zapdu.u.presentResponse;
127                             if (!*(pr->presentStatus))
128                                 os 
129                                     << "OK" << " "
130                                     << "-" << " "
131                                     //<< pr->referenceId << " "
132                                     << *(pr->numberOfRecordsReturned) << " "
133                                     << *(pr->nextResultSetPosition) << " ";
134                             else
135                                 os 
136                                     << "ERROR" << " "
137                                     << "-" << " "
138                                     //<< pr->referenceId << " "
139                                     << *(pr->numberOfRecordsReturned) << " "
140                                     << *(pr->nextResultSetPosition) << " ";
141                                     //<< "- - -" << " ";
142                          }
143                         break;
144     case Z_APDU_deleteResultSetRequest:
145         os << "deleteResultSetRequest" << " "
146            << "OK" << " ";
147         break;
148                      case Z_APDU_deleteResultSetResponse:
149                         os << "deleteResultSetResponse" << " ";
150                         break;
151     case Z_APDU_accessControlRequest:
152         os << "accessControlRequest" << " "
153            << "OK" << " "; 
154         break;
155                      case Z_APDU_accessControlResponse:
156                         os << "accessControlResponse" << " ";
157                         break;
158    case Z_APDU_resourceControlRequest:
159         os << "resourceControlRequest" << " "
160             << "OK" << " ";
161         break;
162                     case Z_APDU_resourceControlResponse:
163                         os << "resourceControlResponse" << " ";
164                         break;
165     case Z_APDU_triggerResourceControlRequest:
166         os << "triggerResourceControlRequest" << " "
167             << "OK" << " ";
168         break;
169     case Z_APDU_resourceReportRequest:
170         os << "resourceReportRequest" << " "
171             << "OK" << " ";
172         break;
173                     case Z_APDU_resourceReportResponse:
174                         os << "resourceReportResponse" << " ";
175                         break;
176      case Z_APDU_scanRequest:
177         os << "scanRequest" << " "
178             << "OK" << " ";
179         break;
180                     case Z_APDU_scanResponse:
181                         os << "scanResponse" << " ";
182                         break;
183     case Z_APDU_sortRequest:
184         os << "sortRequest" << " "
185             << "OK" << " ";
186         break;
187                     case Z_APDU_sortResponse:
188                         os << "sortResponse" << " ";
189                         break;
190     case Z_APDU_segmentRequest:
191         os << "segmentRequest" << " "
192             << "OK" << " ";
193         break;
194     case Z_APDU_extendedServicesRequest:
195         os << "extendedServicesRequest" << " "
196             << "OK" << " ";
197         break;
198                     case Z_APDU_extendedServicesResponse:
199                         os << "extendedServicesResponse" << " ";
200                         break;
201     case Z_APDU_close:
202         os  << "close" << " "
203             << "OK" << " ";
204         break;
205     case Z_APDU_duplicateDetectionRequest:
206         os << "duplicateDetectionRequest" << " "
207            << "OK" << " ";
208         break;
209                     case Z_APDU_duplicateDetectionResponse:
210                         os << "duplicateDetectionResponse" << " ";
211                         break;
212      default: 
213         os << "Z_APDU "
214            << "UNKNOWN" << " ";
215     }
216
217     return os;
218 }
219
220
221 /*
222  * Local variables:
223  * c-basic-offset: 4
224  * indent-tabs-mode: nil
225  * c-file-style: "stroustrup"
226  * End:
227  * vim: shiftwidth=4 tabstop=8 expandtab
228  */