00001 #ifndef FWCore_MessageService_ELrecv_h 00002 #define FWCore_MessageService_ELrecv_h 00003 00004 00005 // ---------------------------------------------------------------------- 00006 // 00007 // ELrecv is a METHOD (not a class!) which the receiver of packets on 00008 // the client side is to call when it gets an error message packet 00009 // sent by ELsend. 00010 // 00011 // The choice of making this a global METHOD rather than a functor 00012 // class may in some cases make it easier to link to this from 00013 // non-C++ code. 00014 // 00015 // Usage: 00016 // 00017 // (0) Define "clients" and "server" such that multiple clients each run 00018 // user code which will issue ErrorLogger messages, and a single server 00019 // is to amalgamated those messages into a single flow with unified 00020 // statistics output. 00021 // 00022 // (1) Each client connects (one or more) ELcollected destinations to the 00023 // ELadministrator. These can be controlled in terms of filtering, 00024 // throttling and so forth. The semantics are like those for ELoutput. 00025 // 00026 // (2) The client process must have a method ELsend (int n, char* data) which 00027 // moves n bytes of data to the server. 00028 // If namepaces are enabled, ELsend is in namdspace zmel. 00029 // 00030 // (3) The server must be set up such that whenever one of these chunks of 00031 // data is moved to it, it calls ELrecv (n, data). 00032 // 00033 // (4) The server process sets up its own ELadministrator, and attaches 00034 // whatever destinations it wants to have. 00035 // 00036 // (*) The effect of an error message on the client is that ELrecv unravels 00037 // the data into the individual items that were supplied, and issues an 00038 // error message which is identical to the error message that was issued 00039 // on the client. Thus all these messages end up amalgamated. 00040 // 00041 // 2/29/00 mf Created file 00042 // 3/16/00 mf Added signature with localModule name. 00043 // 00044 // ---------------------------------------------------------------------- 00045 00046 #include "FWCore/MessageLogger/interface/ELstring.h" 00047 00048 namespace edm { 00049 namespace service { 00050 00051 void ELrecv ( int nbytes, const char * data ); 00052 void ELrecv ( int nbytes, const char * data, ELstring localModule ); 00053 00054 } // end of namespace service 00055 } // end of namespace edm 00056 00057 00058 #endif // FWCore_MessageService_ELrecv_h