| // logging.cpp |
| // |
| // Place this file in the same direcory as stdsoap2.h |
| // Requires soapdefs.h (compile stdsoap2.cpp with -DWITH_SOAPDEFS_H |
| // and -DDEBUG_CALLBACKS) |
| // |
| // Runtime/Customer logging by Mike Helmick |
| // Copyright (c) 2002 - Mike Helmick. Convergys IMG. All Rights Reserved. |
| // This contributed code is covered under the MPL 1.1 license |
| |
| #include "stdsoap2.h" // includes "soapdefs.h" when compiled with -DWITH_SOAPDEFS_H |
| |
| void soap_recv_callback(struct soap*, const char*, size_t len); |
| void soap_sent_callback(struct soap*, const char*, size_t len); |
| void soap_test_callback(struct soap*, const char*, size_t len); |
| |
| void |
| soap_dispatch_callback(struct soap *soap, int idx, const char *msg, size_t len) |
| { if (!soap->user) |
| { // you can set stuff up here, streams etc. |
| // soap->user is used to pass user-defined data |
| // soap->user is never set nor cleared by gSOAP |
| soap->user = (void*)&cout; |
| // don't forget to clean up the streams in the main code |
| // (before discarding the soap runtime environment) |
| } |
| switch (idx) |
| { case SOAP_INDEX_RECV: |
| soap_recv_callback(soap, msg, len); |
| break; |
| case SOAP_INDEX_SENT: |
| soap_sent_callback(soap, msg, len); |
| break; |
| case SOAP_INDEX_TEST: |
| soap_test_callback(soap, msg, len); |
| break; |
| } |
| } |
| |
| // Note: 'msg' is not 0-terminated! |
| void |
| soap_recv_callback(struct soap *soap, const char *msg, size_t len) |
| { ostream& os = *(ostream*)soap->user; |
| os << endl |
| << "Received:" << endl |
| << "----------------------------------------" << endl; |
| os.write(msg, len); |
| os << "----------------------------------------" << endl; |
| } |
| |
| void |
| soap_sent_callback(struct soap *soap, const char *msg, size_t len) |
| { ostream& os = *(ostream*)soap->user; |
| os << endl |
| << "Sent:" << endl |
| << "----------------------------------------" << endl; |
| os.write(msg, len); |
| os << "----------------------------------------" << endl; |
| } |
| |
| void |
| soap_test_callback(struct soap *soap, const char *msg, size_t len) |
| { (*(ostream*)soap->user << "Trace: ").write(msg, len); |
| } |