summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/DescriptorVisitor.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/DescriptorVisitor.h')
-rw-r--r--cpp/src/IceGrid/DescriptorVisitor.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/DescriptorVisitor.h b/cpp/src/IceGrid/DescriptorVisitor.h
new file mode 100644
index 00000000000..90b6c93021b
--- /dev/null
+++ b/cpp/src/IceGrid/DescriptorVisitor.h
@@ -0,0 +1,147 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICEPACK_DESCRIPTOR_VISITOR_H
+#define ICEPACK_DESCRIPTOR_VISITOR_H
+
+namespace IceGrid
+{
+
+class ApplicationWrapper;
+class ServerWrapper;
+class ServiceWrapper;
+class AdapterWrapper;
+class ObjectWrapper;
+class DbEnvWrapper;
+
+class DescriptorVisitor
+{
+public:
+
+ virtual ~DescriptorVisitor() { }
+
+ virtual bool visitApplicationStart(const ApplicationWrapper&, const ApplicationDescriptorPtr&) { return true; }
+ virtual void visitApplicationEnd(const ApplicationWrapper&, const ApplicationDescriptorPtr&) { }
+ virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&) { return true; }
+ virtual void visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr&) { }
+ virtual bool visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr&) { return true; }
+ virtual void visitServiceEnd(const ServiceWrapper&, const ServiceDescriptorPtr&) { }
+ virtual bool visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor&) { return true; }
+ virtual void visitAdapterEnd(const AdapterWrapper&, const AdapterDescriptor&) { }
+ virtual void visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor&) { }
+ virtual void visitObject(const ObjectWrapper&, const ObjectDescriptor&) { }
+};
+
+class ApplicationWrapper
+{
+public:
+
+ ApplicationWrapper(const ApplicationDescriptorPtr&);
+
+ void visit(DescriptorVisitor&);
+ const ApplicationDescriptorPtr& getDescriptor() const;
+
+private:
+
+ const ApplicationDescriptorPtr _descriptor;
+};
+
+class ComponentWrapper
+{
+public:
+
+ ComponentWrapper(const ComponentDescriptorPtr&);
+
+ void visit(DescriptorVisitor&);
+
+private:
+
+ ComponentDescriptorPtr _descriptor;
+
+};
+
+class ServerWrapper : public ComponentWrapper
+{
+public:
+
+ ServerWrapper(const ServerDescriptorPtr&);
+
+ void visit(DescriptorVisitor&);
+ const ServerDescriptorPtr& getDescriptor() const;
+
+private:
+
+ ServerDescriptorPtr _descriptor;
+};
+
+class ServiceWrapper : public ComponentWrapper
+{
+public:
+
+ ServiceWrapper(const ServerWrapper&, const ServiceDescriptorPtr&);
+
+ void visit(DescriptorVisitor&);
+ const ServiceDescriptorPtr& getDescriptor() const;
+
+private:
+
+ const ServerWrapper& _server;
+ ServiceDescriptorPtr _descriptor;
+};
+
+class DbEnvWrapper
+{
+public:
+
+ DbEnvWrapper(const ComponentWrapper&, const DbEnvDescriptor&);
+
+ void visit(DescriptorVisitor&);
+ const DbEnvDescriptor& getDescriptor() const;
+
+private:
+
+ const ComponentWrapper& _component;
+ const DbEnvDescriptor& _descriptor;
+};
+
+class AdapterWrapper
+{
+public:
+
+ AdapterWrapper(const ComponentWrapper&, const AdapterDescriptor&);
+
+ void visit(DescriptorVisitor&);
+ const AdapterDescriptor& getDescriptor() const;
+
+private:
+
+ const ComponentWrapper& _component;
+ const AdapterDescriptor& _descriptor;
+};
+
+class ObjectWrapper
+{
+public:
+
+ ObjectWrapper(const AdapterWrapper&, const ObjectDescriptor&);
+
+ void visit(DescriptorVisitor&);
+ const ObjectDescriptor& getDescriptor() const;
+
+private:
+
+ const AdapterWrapper& _adapter;
+ const ObjectDescriptor& _descriptor;
+};
+
+}
+
+#endif
+
+