summaryrefslogtreecommitdiff
path: root/ACE/TAO/utils/logWalker/PeerProcess.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/TAO/utils/logWalker/PeerProcess.h')
-rw-r--r--ACE/TAO/utils/logWalker/PeerProcess.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/ACE/TAO/utils/logWalker/PeerProcess.h b/ACE/TAO/utils/logWalker/PeerProcess.h
new file mode 100644
index 00000000000..bdb2f7b6227
--- /dev/null
+++ b/ACE/TAO/utils/logWalker/PeerProcess.h
@@ -0,0 +1,87 @@
+// -*- C++ -*-
+
+// $Id$
+//
+
+#ifndef LOG_WALKER_PEER_PROCESS_H
+#define LOG_WALKER_PEER_PROCESS_H
+
+#include "ace/SString.h"
+#include "ace/Synch.h"
+#include "ace/RB_Tree.h"
+#include "ace/Functor.h"
+#include "ace/Containers.h"
+#include "ace/streams.h"
+
+class PeerObject;
+class HostProcess;
+class Invocation;
+class Session;
+class Thread;
+
+class Transport
+{
+public:
+ Transport (const char *addr, bool is_client, size_t offset);
+ long handle_;
+ ACE_CString client_endpoint_;
+ bool local_is_client_;
+ size_t open_offset_;
+ size_t close_offset_;
+};
+
+
+typedef ACE_RB_Tree<u_long, PeerObject*, ACE_Less_Than<u_long>, ACE_Null_Mutex> PeerObjectTable;
+typedef ACE_DLList<Invocation> InvocationList;
+typedef ACE_DLList<Transport> TransportList;
+
+class PeerProcess
+{
+public:
+ static char *nextIdent(void);
+ PeerProcess (size_t offset, bool is_server);
+
+ virtual ~PeerProcess (void);
+
+ const char * id (void) const;
+
+ void set_owner (HostProcess *host);
+ HostProcess *owner (void);
+
+ void match_hosts (Session *session);
+ void set_server_addr (const char *addr);
+ const ACE_CString &server_addr (void) const;
+ const ACE_CString &last_client_addr (void) const;
+
+ bool is_server (void) const;
+ void add_transport (Transport *t);
+ Transport *last_transport (void);
+ Transport *find_transport (long handle);
+
+ bool match_local (const char *addr) const;
+
+ Invocation *new_invocation (size_t req_id, Thread *thr);
+ Invocation *find_invocation (size_t req_id, long handle);
+ Invocation *find_invocation_size (size_t len);
+
+ PeerObject *object_for(const char *oid, size_t len);
+
+ virtual void dump_summary (ostream &strm);
+ virtual void dump_object_detail (ostream &strm);
+ virtual void dump_invocation_detail (ostream &strm);
+
+private:
+ char *ident_;
+ HostProcess *owner_;
+ HostProcess *remote_;
+ ACE_CString server_addr_;
+ TransportList transports_;
+ Transport *last_transport_;
+ bool server_;
+ size_t origin_offset_;
+ PeerObjectTable objects_;
+ InvocationList invocations_;
+};
+
+
+#endif // LOG_WALKER_PEER_PROCESS_H