summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/DescriptorVisitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/DescriptorVisitor.cpp')
-rw-r--r--cpp/src/IceGrid/DescriptorVisitor.cpp176
1 files changed, 176 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/DescriptorVisitor.cpp b/cpp/src/IceGrid/DescriptorVisitor.cpp
new file mode 100644
index 00000000000..e70690f1058
--- /dev/null
+++ b/cpp/src/IceGrid/DescriptorVisitor.cpp
@@ -0,0 +1,176 @@
+// **********************************************************************
+//
+// 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.
+//
+// **********************************************************************
+
+#include <Ice/Ice.h>
+#include <IceGrid/Admin.h>
+#include <IceGrid/DescriptorVisitor.h>
+
+using namespace std;
+using namespace Ice;
+using namespace IceGrid;
+
+ApplicationWrapper::ApplicationWrapper(const ApplicationDescriptorPtr& descriptor) : _descriptor(descriptor)
+{
+}
+
+void
+ApplicationWrapper::visit(DescriptorVisitor& visitor)
+{
+ if(visitor.visitApplicationStart(*this, _descriptor))
+ {
+ for(ServerDescriptorSeq::const_iterator p = _descriptor->servers.begin(); p != _descriptor->servers.end(); ++p)
+ {
+ ServerWrapper(*p).visit(visitor);
+ }
+ visitor.visitApplicationEnd(*this, _descriptor);
+ }
+}
+
+const ApplicationDescriptorPtr&
+ApplicationWrapper::getDescriptor() const
+{
+ return _descriptor;
+}
+
+ComponentWrapper::ComponentWrapper(const ComponentDescriptorPtr& descriptor) : _descriptor(descriptor)
+{
+}
+
+void
+ComponentWrapper::visit(DescriptorVisitor& visitor)
+{
+ for(AdapterDescriptorSeq::const_iterator p = _descriptor->adapters.begin(); p != _descriptor->adapters.end(); ++p)
+ {
+ AdapterWrapper(*this, *p).visit(visitor);
+ }
+
+ for(DbEnvDescriptorSeq::const_iterator q = _descriptor->dbEnvs.begin(); q != _descriptor->dbEnvs.end(); ++q)
+ {
+ DbEnvWrapper(*this, *q).visit(visitor);
+ }
+}
+
+ServerWrapper::ServerWrapper(const ServerDescriptorPtr& descriptor) :
+ ComponentWrapper(descriptor),
+ _descriptor(descriptor)
+{
+}
+
+void
+ServerWrapper::visit(DescriptorVisitor& visitor)
+{
+ if(visitor.visitServerStart(*this, _descriptor))
+ {
+ ComponentWrapper::visit(visitor);
+
+ CppIceBoxDescriptorPtr cppIceBox = CppIceBoxDescriptorPtr::dynamicCast(_descriptor);
+ JavaIceBoxDescriptorPtr javaIceBox = JavaIceBoxDescriptorPtr::dynamicCast(_descriptor);
+
+ const ServiceDescriptorSeq& services =
+ cppIceBox ? cppIceBox->services : (javaIceBox ? javaIceBox->services : ServiceDescriptorSeq());
+
+ for(ServiceDescriptorSeq::const_iterator p = services.begin(); p != services.end(); ++p)
+ {
+ ServiceWrapper(*this, *p).visit(visitor);
+ }
+ visitor.visitServerEnd(*this, _descriptor);
+ }
+}
+
+const ServerDescriptorPtr&
+ServerWrapper::getDescriptor() const
+{
+ return _descriptor;
+}
+
+ServiceWrapper::ServiceWrapper(const ServerWrapper& server, const ServiceDescriptorPtr& descriptor) :
+ ComponentWrapper(descriptor),
+ _server(server),
+ _descriptor(descriptor)
+{
+}
+
+void
+ServiceWrapper::visit(DescriptorVisitor& visitor)
+{
+ if(visitor.visitServiceStart(*this, _descriptor))
+ {
+ ComponentWrapper::visit(visitor);
+ visitor.visitServiceEnd(*this, _descriptor);
+ }
+}
+
+const ServiceDescriptorPtr&
+ServiceWrapper::getDescriptor() const
+{
+ return _descriptor;
+}
+
+DbEnvWrapper::DbEnvWrapper(const ComponentWrapper& component, const DbEnvDescriptor& descriptor) :
+ _component(component),
+ _descriptor(descriptor)
+{
+}
+
+void
+DbEnvWrapper::visit(DescriptorVisitor& visitor)
+{
+ visitor.visitDbEnv(*this, _descriptor);
+}
+
+const DbEnvDescriptor&
+DbEnvWrapper::getDescriptor() const
+{
+ return _descriptor;
+}
+
+AdapterWrapper::AdapterWrapper(const ComponentWrapper& component, const AdapterDescriptor& descriptor) :
+ _component(component),
+ _descriptor(descriptor)
+{
+}
+
+void
+AdapterWrapper::visit(DescriptorVisitor& visitor)
+{
+ if(visitor.visitAdapterStart(*this, _descriptor))
+ {
+ for(ObjectDescriptorSeq::const_iterator p = _descriptor.objects.begin(); p != _descriptor.objects.end(); ++p)
+ {
+ ObjectWrapper(*this, *p).visit(visitor);
+ }
+ visitor.visitAdapterEnd(*this, _descriptor);
+ }
+}
+
+const AdapterDescriptor&
+AdapterWrapper::getDescriptor() const
+{
+ return _descriptor;
+}
+
+ObjectWrapper::ObjectWrapper(const AdapterWrapper& adapter, const ObjectDescriptor& descriptor):
+ _adapter(adapter),
+ _descriptor(descriptor)
+{
+}
+
+void
+ObjectWrapper::visit(DescriptorVisitor& visitor)
+{
+ visitor.visitObject(*this, _descriptor);
+}
+
+const ObjectDescriptor&
+ObjectWrapper::getDescriptor() const
+{
+ return _descriptor;
+}
+
+