--------------------- PatchSet 1543 Date: 2005/08/20 06:17:25 Author: rousskov Branch: squid3-icap Tag: (none) Log: - All messages were being rewritten as "SourceStart". Fixed. - Added pipe names to ease debugging. - Polished debugging messages. Members: src/MsgPipe.cc:1.1.2.3->1.1.2.4 src/MsgPipe.h:1.1.2.2->1.1.2.3 Index: squid3/src/MsgPipe.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/Attic/MsgPipe.cc,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -r1.1.2.3 -r1.1.2.4 --- squid3/src/MsgPipe.cc 19 Aug 2005 22:35:12 -0000 1.1.2.3 +++ squid3/src/MsgPipe.cc 20 Aug 2005 06:17:25 -0000 1.1.2.4 @@ -7,15 +7,16 @@ // static event callback template // XXX: refcounting needed to make sure destination still exists -#define MsgPipe_MAKE_CALLBACK(name, destination) \ +#define MsgPipe_MAKE_CALLBACK(callName, destination) \ static \ -void MsgPipe_send ## name(void *p) { \ +void MsgPipe_send ## callName(void *p) { \ MsgPipe *pipe = static_cast(p); \ - debugs(0,0, "MsgPipe " << pipe << " does " << #name << \ + debugs(0,0, "MsgPipe " << pipe->name << "(" << pipe << ") does " << \ + "send" << #callName << " to " << pipe->destination << \ "; data: " << pipe->data << \ - "; source: " << pipe->source << "; sink: " << pipe->sink << "\n"); \ - if (pipe->destination) \ - pipe->destination->note##name(pipe); \ + "; source: " << pipe->source << "; sink: " << pipe->sink); \ + if (pipe->destination && cbdataReferenceValid(pipe->destination)) \ + pipe->destination->note##callName(pipe); \ } // static event callbacks @@ -27,44 +28,44 @@ MsgPipe_MAKE_CALLBACK(SinkAbort, source) -MsgPipe::MsgPipe(): data(NULL), source(NULL), sink(NULL) { +MsgPipe::MsgPipe(const char *aName): name(aName), + data(NULL), source(NULL), sink(NULL) { } void MsgPipe::sendSourceStart() { - sendLater("sendSourceStart", &MsgPipe_sendSourceStart); + sendLater("sendSourceStart", &MsgPipe_sendSourceStart, sink); } void MsgPipe::sendSourceProgress() { - sendLater("sendSourceProgress", &MsgPipe_sendSourceProgress); + sendLater("sendSourceProgress", &MsgPipe_sendSourceProgress, sink); } void MsgPipe::sendSourceFinish() { - sendLater("sendSourceFinish", &MsgPipe_sendSourceFinish); + sendLater("sendSourceFinish", &MsgPipe_sendSourceFinish, sink); } void MsgPipe::sendSourceAbort() { - sendLater("sendSourceAbort", &MsgPipe_sendSourceAbort); + sendLater("sendSourceAbort", &MsgPipe_sendSourceAbort, sink); } void MsgPipe::sendSinkNeed() { - sendLater("sendSinkNeed", &MsgPipe_sendSinkNeed); + sendLater("sendSinkNeed", &MsgPipe_sendSinkNeed, source); } void MsgPipe::sendSinkAbort() { - sendLater("sendSinkAbort", &MsgPipe_sendSinkAbort); + sendLater("sendSinkAbort", &MsgPipe_sendSinkAbort, source); } -void MsgPipe::sendLater(const char *callName, EVH * handler) { - debugs(0,0, "MsgPipe " << this << " will " << callName << "; data: " << data << - "; source: " << source << "; sink " << sink << "\n"); - eventAdd("MsgPipe::sendSourceStart", &MsgPipe_sendSourceStart, - this, 0, true); +void MsgPipe::sendLater(const char *callName, EVH * handler, void *destination) { + debugs(0,0, "MsgPipe " << name << "(" << this << ") will " << callName << + " to " << destination << "; data: " << data << + "; source: " << source << "; sink " << sink); + eventAdd(callName, handler, this, 0, true); } - Index: squid3/src/MsgPipe.h =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/Attic/MsgPipe.h,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- squid3/src/MsgPipe.h 19 Aug 2005 22:35:12 -0000 1.1.2.2 +++ squid3/src/MsgPipe.h 20 Aug 2005 06:17:25 -0000 1.1.2.3 @@ -1,6 +1,6 @@ /* - * $Id: MsgPipe.h,v 1.1.2.2 2005/08/19 22:35:12 rousskov Exp $ + * $Id: MsgPipe.h,v 1.1.2.3 2005/08/20 06:17:25 rousskov Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -48,10 +48,7 @@ class MsgPipe { public: - CBDATA_CLASS2(MsgPipe); - -public: - MsgPipe(); + MsgPipe(const char *aName = "anonym"); // the pipe source calls these to notify the sink void sendSourceStart(); @@ -64,12 +61,16 @@ void sendSinkAbort(); public: + const char *name; // unmanaged pointer used for debugging only + MsgPipeData *data; MsgPipeSource *source; MsgPipeSink *sink; private: - void sendLater(const char *callName, EVH * handler); + void sendLater(const char *callName, EVH * handler, void *destination); + + CBDATA_CLASS2(MsgPipe); }; #endif /* SQUID_MSGPIPE_H */