diff options
Diffstat (limited to 'cpp/demo')
-rw-r--r-- | cpp/demo/Ice/nrvo/.depend | 5 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/.gitignore | 7 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/Client.cpp | 141 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/Makefile | 42 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/Makefile.mak | 50 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/MyStringSeq.h | 32 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/Nrvo.ice | 30 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/NrvoI.cpp | 54 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/NrvoI.h | 31 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/README | 11 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/Server.cpp | 44 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/config.client | 20 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/config.server | 20 | ||||
-rw-r--r-- | cpp/demo/Ice/nrvo/expect.py | 30 |
14 files changed, 517 insertions, 0 deletions
diff --git a/cpp/demo/Ice/nrvo/.depend b/cpp/demo/Ice/nrvo/.depend new file mode 100644 index 00000000000..927f573b68e --- /dev/null +++ b/cpp/demo/Ice/nrvo/.depend @@ -0,0 +1,5 @@ +Nrvo$(OBJEXT): Nrvo.cpp Nrvo.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h MyStringSeq.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Client$(OBJEXT): Client.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h Nrvo.h MyStringSeq.h +NrvoI$(OBJEXT): NrvoI.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h NrvoI.h Nrvo.h MyStringSeq.h +Nrvo.cpp: Nrvo.ice +Nrvo.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/demo/Ice/nrvo/.gitignore b/cpp/demo/Ice/nrvo/.gitignore new file mode 100644 index 00000000000..ee1193c8569 --- /dev/null +++ b/cpp/demo/Ice/nrvo/.gitignore @@ -0,0 +1,7 @@ +// Generated by makegitignore.py + +// IMPORTANT: Do not edit this file -- any edits made here will be lost! +client +server +Throughput.cpp +Throughput.h diff --git a/cpp/demo/Ice/nrvo/Client.cpp b/cpp/demo/Ice/nrvo/Client.cpp new file mode 100644 index 00000000000..2b98af66eed --- /dev/null +++ b/cpp/demo/Ice/nrvo/Client.cpp @@ -0,0 +1,141 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 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 <Nrvo.h> +#include <MyStringSeq.h> +#include <iomanip> + +using namespace std; +using namespace Demo; + +class NrvoClient : public Ice::Application +{ +public: + + NrvoClient(); + virtual int run(int, char*[]); + +private: + + void menu(); +}; + +int +main(int argc, char* argv[]) +{ + NrvoClient app; + return app.main(argc, argv, "config.client"); +} + +NrvoClient::NrvoClient() +{ +} + +int +NrvoClient::run(int argc, char* argv[]) +{ + if(argc > 1) + { + cerr << appName() << ": too many arguments" << endl; + return EXIT_FAILURE; + } + + NrvoPrx nrvo = NrvoPrx::checkedCast(communicator()->propertyToProxy("Nrvo.Proxy")); + if(!nrvo) + { + cerr << argv[0] << ": invalid proxy" << endl; + return EXIT_FAILURE; + } + + menu(); + + char currentOperation = '1'; + char c; + do + { + try + { + cout << "==> "; + cin >> c; + + if(c == '1' || c == '2' || c == '3' || c == 's' || c == '?' || c == 'x') + { + currentOperation = c; + switch(c) + { + case '1': + { + cout << "calling op1" << endl; + MyStringSeq seq = nrvo->op1(); + break; + } + + case '2': + { + cout << "calling op2" << endl; + StringSeq seq= nrvo->op2(); + break; + } + + case '3': + { + cout << "calling op3" << endl; + StringSeq seq= nrvo->op3(10); + break; + } + + case 's': + { + nrvo->shutdown(); + } + + case '?': + { + menu(); + break; + } + + case 'x': + { + break; + } + } + } + else + { + cout << "unknown command `" << c << "'" << endl; + menu(); + } + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + } + } + while(cin.good() && c != 'x'); + + return EXIT_SUCCESS; +} + + +void +NrvoClient::menu() +{ + cout << + "usage:\n" + "\n" + "Operation to call:\n" + "1: return a value object.\n" + "2: return a value object that is a member attribute.\n" + "3: return a value object from an operation with multiple return path.\n" + "s: shutdown server.\n" + "x: exit.\n" + "?: show this menu.\n"; +} diff --git a/cpp/demo/Ice/nrvo/Makefile b/cpp/demo/Ice/nrvo/Makefile new file mode 100644 index 00000000000..e4440c95693 --- /dev/null +++ b/cpp/demo/Ice/nrvo/Makefile @@ -0,0 +1,42 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2008 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. +# +# ********************************************************************** + +top_srcdir = ../../.. + +CLIENT = client +SERVER = server + +TARGETS = $(CLIENT) $(SERVER) + +OBJS = Nrvo.o + +COBJS = Client.o + +SOBJS = NrvoI.o \ + Server.o + +SRCS = $(OBJS:.o=.cpp) \ + $(COBJS:.o=.cpp) \ + $(SOBJS:.o=.cpp) + +SLICE_SRCS = Nrvo.ice + +include $(top_srcdir)/config/Make.rules + +CPPFLAGS := -I. $(CPPFLAGS) + +$(CLIENT): $(OBJS) $(COBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) $(LIBS) + +$(SERVER): $(OBJS) $(SOBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SOBJS) $(LIBS) + +include .depend diff --git a/cpp/demo/Ice/nrvo/Makefile.mak b/cpp/demo/Ice/nrvo/Makefile.mak new file mode 100644 index 00000000000..d99fe2775f7 --- /dev/null +++ b/cpp/demo/Ice/nrvo/Makefile.mak @@ -0,0 +1,50 @@ +# **********************************************************************
+#
+# Copyright (c) 2003-2008 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.
+#
+# **********************************************************************
+
+top_srcdir = ..\..\..
+
+CLIENT = client.exe
+SERVER = server.exe
+
+TARGETS = $(CLIENT) $(SERVER)
+
+OBJS = Nrvo.obj
+
+COBJS = Client.obj
+
+SOBJS = NrvoI.obj \
+ Server.obj
+
+SRCS = $(OBJS:.obj=.cpp) \
+ $(COBJS:.obj=.cpp) \
+ $(SOBJS:.obj=.cpp)
+
+!include $(top_srcdir)/config/Make.rules.mak
+
+CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
+
+!if "$(GENERATE_PDB)" == "yes"
+CPDBFLAGS = /pdb:$(CLIENT:.exe=.pdb)
+SPDBFLAGS = /pdb:$(SERVER:.exe=.pdb)
+!endif
+
+$(CLIENT): $(OBJS) $(COBJS)
+ $(LINK) $(LD_EXEFLAGS) $(CPDBFLAGS) $(SETARGV) $(OBJS) $(COBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS)
+ @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \
+ $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest
+
+$(SERVER): $(OBJS) $(SOBJS)
+ $(LINK) $(LD_EXEFLAGS) $(SPDBFLAGS) $(SETARGV) $(OBJS) $(SOBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS)
+ @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \
+ $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest
+
+clean::
+ del /q Nrvo.cpp Nrvo.h
+
+!include .depend
diff --git a/cpp/demo/Ice/nrvo/MyStringSeq.h b/cpp/demo/Ice/nrvo/MyStringSeq.h new file mode 100644 index 00000000000..e5adfc4b45e --- /dev/null +++ b/cpp/demo/Ice/nrvo/MyStringSeq.h @@ -0,0 +1,32 @@ +#ifndef MY_STRING_SEQ +#define MY_STRING_SEQ + +#include <vector> +#include <string> +#include <iostream> + +class MyStringSeq : public std::vector<std::string> +{ +public: + + MyStringSeq() + {} + + MyStringSeq(size_t n) : + std::vector<std::string>(n) + { + } + + MyStringSeq(size_t n, const std::string& str) : + std::vector<std::string>(n, str) + { + } + + MyStringSeq(const MyStringSeq& seq) : + std::vector<std::string>(seq) + { + std::cout << "MyStringSeq copy ctor" << std::endl; + } +}; + +#endif diff --git a/cpp/demo/Ice/nrvo/Nrvo.ice b/cpp/demo/Ice/nrvo/Nrvo.ice new file mode 100644 index 00000000000..0ca0c63965b --- /dev/null +++ b/cpp/demo/Ice/nrvo/Nrvo.ice @@ -0,0 +1,30 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 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 NRV0_ICE +#define NRV0_ICE + +module Demo +{ + +[["cpp:include:MyStringSeq.h"]] +["cpp:type:MyStringSeq"] sequence<string> StringSeq; +const int StringSeqSize = 50000; + +interface Nrvo +{ + StringSeq op1(); + StringSeq op2(); + StringSeq op3(int size); + void shutdown(); +}; + +}; + +#endif diff --git a/cpp/demo/Ice/nrvo/NrvoI.cpp b/cpp/demo/Ice/nrvo/NrvoI.cpp new file mode 100644 index 00000000000..dc07ff8d10f --- /dev/null +++ b/cpp/demo/Ice/nrvo/NrvoI.cpp @@ -0,0 +1,54 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 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 <iostream> +#include <NrvoI.h> + +using namespace std; + +NrvoI::NrvoI() : + _stringSeq(Demo::StringSeqSize, "hello") +{ +} + +Demo::StringSeq +NrvoI::op1(const Ice::Current&) +{ + cout << "running op1" << endl; + MyStringSeq seq = MyStringSeq(Demo::StringSeqSize, "hello"); + return seq; +} + +Demo::StringSeq +NrvoI::op2(const Ice::Current&) +{ + cout << "running op2" << endl; + return _stringSeq; +} + +Demo::StringSeq +NrvoI::op3(int size, const Ice::Current&) +{ + cout << "running op3" << endl; + MyStringSeq seq; + if(size < 10) + { + return MyStringSeq(size, "hello"); + } + seq = MyStringSeq(10, "hello"); + return seq; +} + + +void +NrvoI::shutdown(const Ice::Current& c) +{ + c.adapter->getCommunicator()->shutdown(); +} diff --git a/cpp/demo/Ice/nrvo/NrvoI.h b/cpp/demo/Ice/nrvo/NrvoI.h new file mode 100644 index 00000000000..5439c2ca15e --- /dev/null +++ b/cpp/demo/Ice/nrvo/NrvoI.h @@ -0,0 +1,31 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 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 NRVO_I_H +#define NRVO_I_H + +#include <Nrvo.h> +#include <MyStringSeq.h> + +class NrvoI : public Demo::Nrvo +{ +public: + + NrvoI(); + virtual Demo::StringSeq op1(const Ice::Current&); + virtual Demo::StringSeq op2(const Ice::Current&); + virtual Demo::StringSeq op3(int size, const Ice::Current&); + virtual void shutdown(const Ice::Current&); + +private: + + MyStringSeq _stringSeq; +}; + +#endif diff --git a/cpp/demo/Ice/nrvo/README b/cpp/demo/Ice/nrvo/README new file mode 100644 index 00000000000..dc4d60c3866 --- /dev/null +++ b/cpp/demo/Ice/nrvo/README @@ -0,0 +1,11 @@ + +A simple demo that show how Ice take advantage of NRVO (Named Return Value Optimization) +include in Visual Studio c++ compiler. + +To run the demo, first start the server: + +$ server + +In a separate window, start the client: + +$ client diff --git a/cpp/demo/Ice/nrvo/Server.cpp b/cpp/demo/Ice/nrvo/Server.cpp new file mode 100644 index 00000000000..52b9d27f3d8 --- /dev/null +++ b/cpp/demo/Ice/nrvo/Server.cpp @@ -0,0 +1,44 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 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 <NrvoI.h> + +using namespace std; + +class NrvotServer : public Ice::Application +{ +public: + + virtual int run(int, char*[]); +}; + +int +main(int argc, char* argv[]) +{ + NrvotServer app; + return app.main(argc, argv, "config.server"); +} + +int +NrvotServer::run(int argc, char* argv[]) +{ + if(argc > 1) + { + cerr << appName() << ": too many arguments" << endl; + return EXIT_FAILURE; + } + + Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Nrvo"); + Demo::NrvoPtr servant = new NrvoI(); + adapter->add(servant, communicator()->stringToIdentity("nrvo")); + adapter->activate(); + communicator()->waitForShutdown(); + return EXIT_SUCCESS; +} diff --git a/cpp/demo/Ice/nrvo/config.client b/cpp/demo/Ice/nrvo/config.client new file mode 100644 index 00000000000..c582c4dd677 --- /dev/null +++ b/cpp/demo/Ice/nrvo/config.client @@ -0,0 +1,20 @@ +# +# The client reads this property to create the reference to the +# "Throughput" object in the server. +# +Nrvo.Proxy=nrvo:default -p 10000 -h 127.0.0.1 + +# +# Disable client-side ACM. +# +Ice.ACM.Client=0 + +# +# SSL Configuration +# +Ice.Plugin.IceSSL=IceSSL:createIceSSL +IceSSL.DefaultDir=../../../../certs +IceSSL.CertAuthFile=cacert.pem +IceSSL.CertFile=c_rsa1024_pub.pem +IceSSL.KeyFile=c_rsa1024_priv.pem + diff --git a/cpp/demo/Ice/nrvo/config.server b/cpp/demo/Ice/nrvo/config.server new file mode 100644 index 00000000000..2a90e37a37c --- /dev/null +++ b/cpp/demo/Ice/nrvo/config.server @@ -0,0 +1,20 @@ +# +# The server creates one single object adapter with the name +# "Throughput". The following line sets the endpoints for this +# adapter. +# +Nrvo.Endpoints=default -p 10000 -h 127.0.0.1 + +# +# Warn about connection exceptions +# +Ice.Warn.Connections=1 + +# +# SSL Configuration +# +Ice.Plugin.IceSSL=IceSSL:createIceSSL +IceSSL.DefaultDir=../../../../certs +IceSSL.CertAuthFile=cacert.pem +IceSSL.CertFile=s_rsa1024_pub.pem +IceSSL.KeyFile=s_rsa1024_priv.pem diff --git a/cpp/demo/Ice/nrvo/expect.py b/cpp/demo/Ice/nrvo/expect.py new file mode 100644 index 00000000000..bce4683e291 --- /dev/null +++ b/cpp/demo/Ice/nrvo/expect.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2003-2008 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. +# +# ********************************************************************** + +import sys, os + +path = [ ".", "..", "../..", "../../..", "../../../.." ] +head = os.path.dirname(sys.argv[0]) +if len(head) > 0: + path = [os.path.join(head, p) for p in path] +path = [os.path.abspath(p) for p in path if os.path.exists(os.path.join(p, "demoscript")) ] +if len(path) == 0: + raise "can't find toplevel directory!" +sys.path.append(path[0]) + +from demoscript import * +from demoscript.Ice import nrvo + +server = Util.spawn('./server --Ice.PrintAdapterReady') +server.expect('.* ready') +client = Util.spawn('./client') +client.expect('.*==>') + +nrvo.run(client, server) |