blob: 0ada17312997d6958db6255ca6c6ede37757b206 [file] [log] [blame]
// 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);
}