summaryrefslogtreecommitdiff
path: root/cpp/demo/Ice/nrvo
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/Ice/nrvo')
-rw-r--r--cpp/demo/Ice/nrvo/.depend1
-rw-r--r--cpp/demo/Ice/nrvo/Client.cpp123
-rwxr-xr-xcpp/demo/Ice/nrvo/Ice.nrvo.client.dsp165
-rwxr-xr-xcpp/demo/Ice/nrvo/Ice.nrvo.server.dsp169
-rw-r--r--cpp/demo/Ice/nrvo/Makefile3
-rw-r--r--cpp/demo/Ice/nrvo/Makefile.mak3
-rw-r--r--cpp/demo/Ice/nrvo/MyStringSeq.cpp34
-rw-r--r--cpp/demo/Ice/nrvo/MyStringSeq.h31
-rw-r--r--cpp/demo/Ice/nrvo/Nrvo.ice4
-rw-r--r--cpp/demo/Ice/nrvo/NrvoI.cpp32
-rw-r--r--cpp/demo/Ice/nrvo/NrvoI.h2
-rw-r--r--cpp/demo/Ice/nrvo/README67
-rw-r--r--cpp/demo/Ice/nrvo/Server.cpp3
-rw-r--r--cpp/demo/Ice/nrvo/config.client9
-rw-r--r--cpp/demo/Ice/nrvo/config.server4
15 files changed, 520 insertions, 130 deletions
diff --git a/cpp/demo/Ice/nrvo/.depend b/cpp/demo/Ice/nrvo/.depend
index 7bda9bb610a..9e5bee5a07c 100644
--- a/cpp/demo/Ice/nrvo/.depend
+++ b/cpp/demo/Ice/nrvo/.depend
@@ -1,4 +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
+MyStringSeq$(OBJEXT): MyStringSeq.cpp ./MyStringSeq.h $(includedir)/IceUtil/Config.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/FactoryTableInit.h $(includedir)/Ice/FactoryTable.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/FactoryTableInit.h $(includedir)/Ice/FactoryTable.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
Server$(OBJEXT): Server.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/FactoryTableInit.h $(includedir)/Ice/FactoryTable.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
diff --git a/cpp/demo/Ice/nrvo/Client.cpp b/cpp/demo/Ice/nrvo/Client.cpp
index 449fa6fc468..2ff70a697a3 100644
--- a/cpp/demo/Ice/nrvo/Client.cpp
+++ b/cpp/demo/Ice/nrvo/Client.cpp
@@ -34,7 +34,12 @@ main(int argc, char* argv[])
return app.main(argc, argv, "config.client");
}
-NrvoClient::NrvoClient()
+NrvoClient::NrvoClient() :
+ //
+ // Since this is an interactive demo we don't want any signal
+ // handling.
+ //
+ Ice::Application(Ice::NoSignalHandling)
{
}
@@ -56,7 +61,6 @@ NrvoClient::run(int argc, char* argv[])
menu();
- char currentOperation = '1';
char c;
do
{
@@ -65,54 +69,59 @@ NrvoClient::run(int argc, char* argv[])
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;
- MyStringSeq seq = nrvo->op2();
- break;
- }
-
- case '3':
- {
- cout << "calling op3" << endl;
- MyStringSeq seq = nrvo->op3(10);
- break;
- }
-
- case 's':
- {
- nrvo->shutdown();
- }
-
- case '?':
- {
- menu();
- break;
- }
-
- case 'x':
- {
- break;
- }
- }
- }
- else
- {
- cout << "unknown command `" << c << "'" << endl;
- menu();
- }
+ switch(c)
+ {
+ case '1':
+ {
+ cout << "calling op1" << endl;
+ MyStringSeq seq = nrvo->op1();
+ break;
+ }
+
+ case '2':
+ {
+ cout << "calling op2" << endl;
+ MyStringSeq seq = nrvo->op2();
+ break;
+ }
+
+ case '3':
+ {
+ cout << "calling op3(10)" << endl;
+ MyStringSeq seq = nrvo->op3(10);
+ break;
+ }
+
+ case '4':
+ {
+ cout << "calling op3(0)" << endl;
+ MyStringSeq seq = nrvo->op3(0);
+ break;
+ }
+
+ case 's':
+ {
+ nrvo->shutdown();
+ break;
+ }
+
+ case '?':
+ {
+ menu();
+ break;
+ }
+
+ case 'x':
+ {
+ break;
+ }
+ default:
+ {
+ cout << "unknown command `" << c << "'" << endl;
+ menu();
+ break;
+ }
+ }
}
catch(const Ice::Exception& ex)
{
@@ -124,7 +133,6 @@ NrvoClient::run(int argc, char* argv[])
return EXIT_SUCCESS;
}
-
void
NrvoClient::menu()
{
@@ -132,10 +140,11 @@ NrvoClient::menu()
"usage:\n"
"\n"
"Operation to call:\n"
- "1: return a string sequence.\n"
- "2: return a string sequence that is a data member of the servant.\n"
- "3: return a string sequence from an operation with multiple return path.\n"
- "s: shutdown server.\n"
- "x: exit.\n"
- "?: show this menu.\n";
+ "1: return a string sequence\n"
+ "2: return a string sequence that is a data member of the servant\n"
+ "3: return a string sequence from an operation with multiple return paths\n"
+ "4: return a string sequence from an operation with multiple return paths, using RVO\n"
+ "s: shutdown server\n"
+ "x: exit\n"
+ "?: show this menu\n";
}
diff --git a/cpp/demo/Ice/nrvo/Ice.nrvo.client.dsp b/cpp/demo/Ice/nrvo/Ice.nrvo.client.dsp
new file mode 100755
index 00000000000..438db2d9d81
--- /dev/null
+++ b/cpp/demo/Ice/nrvo/Ice.nrvo.client.dsp
@@ -0,0 +1,165 @@
+# Microsoft Developer Studio Project File - Name="Ice.nrvo.client.exe" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Ice.nrvo.client.exe - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Ice.nrvo.client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Ice.nrvo.client.mak" CFG="Ice.nrvo.client.exe - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Ice.nrvo.client.exe - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Ice.nrvo.client.exe - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Ice.nrvo.client.exe - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /WX /GR /GX /O2 /I "." /I "../../../include" /I "../../../include/stlport" /D "_CONSOLE" /D "NDEBUG" /D "WIN32_LEAN_AND_MEAN" /FD /c
+# SUBTRACT CPP /Fr /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Ice.lib IceUtil.lib setargv.obj /nologo /subsystem:console /pdb:none /machine:I386 /out:"client.exe" /libpath:"../../../lib" /FIXED:no /IGNORE:4089
+# SUBTRACT LINK32 /debug /nodefaultlib
+
+!ELSEIF "$(CFG)" == "Ice.nrvo.client.exe - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /WX /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../../include/stlport" /D "_CONSOLE" /D "_DEBUG" /D "WIN32_LEAN_AND_MEAN" /FD /GZ /c
+# SUBTRACT CPP /Fr /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 Iced.lib IceUtild.lib setargv.obj /nologo /subsystem:console /debug /machine:I386 /out:"client.exe" /pdbtype:sept /libpath:"../../../lib" /FIXED:no
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "Ice.nrvo.client.exe - Win32 Release"
+# Name "Ice.nrvo.client.exe - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\MyStringSeq.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Nrvo.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\MyStringSeq.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Nrvo.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\Nrvo.ice
+
+!IF "$(CFG)" == "Ice.nrvo.client.exe - Win32 Release"
+
+USERDEP__NRVO_="..\..\..\bin\slice2cpp.exe" "..\..\..\lib\slice.lib"
+# Begin Custom Build
+InputPath=.\Nrvo.ice
+
+BuildCmds= \
+ ..\..\..\bin\slice2cpp.exe Nrvo.ice
+
+"Nrvo.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"Nrvo.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "Ice.nrvo.client.exe - Win32 Debug"
+
+USERDEP__NRVO_="..\..\..\bin\slice2cpp.exe" "..\..\..\lib\sliced.lib"
+# Begin Custom Build
+InputPath=.\Nrvo.ice
+
+BuildCmds= \
+ ..\..\..\bin\slice2cpp.exe Nrvo.ice
+
+"Nrvo.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"Nrvo.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\README
+# End Source File
+# End Target
+# End Project
diff --git a/cpp/demo/Ice/nrvo/Ice.nrvo.server.dsp b/cpp/demo/Ice/nrvo/Ice.nrvo.server.dsp
new file mode 100755
index 00000000000..7a8be43bde1
--- /dev/null
+++ b/cpp/demo/Ice/nrvo/Ice.nrvo.server.dsp
@@ -0,0 +1,169 @@
+# Microsoft Developer Studio Project File - Name="Ice.nrvo.server.exe" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Ice.nrvo.server.exe - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Ice.nrvo.server.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Ice.nrvo.server.mak" CFG="Ice.nrvo.server.exe - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Ice.nrvo.server.exe - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Ice.nrvo.server.exe - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Ice.nrvo.server.exe - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /WX /GR /GX /O2 /I "." /I "../../../include" /I "../../../include/stlport" /D "_CONSOLE" /D "NDEBUG" /D "WIN32_LEAN_AND_MEAN" /FD /c
+# SUBTRACT CPP /Fr /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Ice.lib IceUtil.lib setargv.obj /nologo /subsystem:console /pdb:none /machine:I386 /out:"server.exe" /libpath:"../../../lib" /FIXED:no /IGNORE:4089
+# SUBTRACT LINK32 /debug /nodefaultlib
+
+!ELSEIF "$(CFG)" == "Ice.nrvo.server.exe - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /WX /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../../include/stlport" /D "_CONSOLE" /D "_DEBUG" /D "WIN32_LEAN_AND_MEAN" /FD /GZ /c
+# SUBTRACT CPP /Fr /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 Iced.lib IceUtild.lib setargv.obj /nologo /subsystem:console /debug /machine:I386 /out:"server.exe" /pdbtype:sept /libpath:"../../../lib" /FIXED:no
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "Ice.nrvo.server.exe - Win32 Release"
+# Name "Ice.nrvo.server.exe - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\MyStringSeq.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Nrvo.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\NrvoI.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Server.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Nrvo.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\NrvoI.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\Nrvo.ice
+
+!IF "$(CFG)" == "Ice.nrvo.server.exe - Win32 Release"
+
+USERDEP__NRVO_="..\..\..\bin\slice2cpp.exe" "..\..\..\lib\slice.lib"
+# Begin Custom Build
+InputPath=.\Nrvo.ice
+
+BuildCmds= \
+ ..\..\..\bin\slice2cpp.exe Nrvo.ice
+
+"Nrvo.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"Nrvo.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "Ice.nrvo.server.exe - Win32 Debug"
+
+USERDEP__NRVO_="..\..\..\bin\slice2cpp.exe" "..\..\..\lib\sliced.lib"
+# Begin Custom Build
+InputPath=.\Nrvo.ice
+
+BuildCmds= \
+ ..\..\..\bin\slice2cpp.exe Nrvo.ice
+
+"Nrvo.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"Nrvo.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\README
+# End Source File
+# End Target
+# End Project
diff --git a/cpp/demo/Ice/nrvo/Makefile b/cpp/demo/Ice/nrvo/Makefile
index d5159ce9b82..9afd1a5ee45 100644
--- a/cpp/demo/Ice/nrvo/Makefile
+++ b/cpp/demo/Ice/nrvo/Makefile
@@ -14,7 +14,8 @@ SERVER = server
TARGETS = $(CLIENT) $(SERVER)
-OBJS = Nrvo.o
+OBJS = Nrvo.o \
+ MyStringSeq.o
COBJS = Client.o
diff --git a/cpp/demo/Ice/nrvo/Makefile.mak b/cpp/demo/Ice/nrvo/Makefile.mak
index 48784e0328d..70ff1c4343a 100644
--- a/cpp/demo/Ice/nrvo/Makefile.mak
+++ b/cpp/demo/Ice/nrvo/Makefile.mak
@@ -14,7 +14,8 @@ SERVER = server.exe
TARGETS = $(CLIENT) $(SERVER)
-OBJS = Nrvo.obj
+OBJS = Nrvo.obj \
+ MyStringSeq.obj
COBJS = Client.obj
diff --git a/cpp/demo/Ice/nrvo/MyStringSeq.cpp b/cpp/demo/Ice/nrvo/MyStringSeq.cpp
new file mode 100644
index 00000000000..240f42f6fb6
--- /dev/null
+++ b/cpp/demo/Ice/nrvo/MyStringSeq.cpp
@@ -0,0 +1,34 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2009 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 <MyStringSeq.h>
+
+#include <iostream>
+
+using namespace std;
+
+MyStringSeq::MyStringSeq()
+{
+}
+
+MyStringSeq::MyStringSeq(size_t n) :
+ vector<string>(n)
+{
+}
+
+MyStringSeq::MyStringSeq(size_t n, const string& str) :
+ vector<string>(n, str)
+{
+}
+
+MyStringSeq::MyStringSeq(const MyStringSeq& seq) :
+ vector<string>(seq)
+{
+ cout << "MyStringSeq copy ctor" << endl;
+}
diff --git a/cpp/demo/Ice/nrvo/MyStringSeq.h b/cpp/demo/Ice/nrvo/MyStringSeq.h
index e5adfc4b45e..54e057a7836 100644
--- a/cpp/demo/Ice/nrvo/MyStringSeq.h
+++ b/cpp/demo/Ice/nrvo/MyStringSeq.h
@@ -1,32 +1,31 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2009 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 MY_STRING_SEQ
#define MY_STRING_SEQ
+#include <IceUtil/Config.h>
#include <vector>
#include <string>
-#include <iostream>
class MyStringSeq : public std::vector<std::string>
{
public:
- MyStringSeq()
- {}
+ MyStringSeq();
+
+ MyStringSeq(size_t);
- MyStringSeq(size_t n) :
- std::vector<std::string>(n)
- {
- }
+ MyStringSeq(size_t, const std::string&);
- MyStringSeq(size_t n, const std::string& str) :
- std::vector<std::string>(n, str)
- {
- }
+ MyStringSeq(const MyStringSeq&);
- 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
index 4e52b8f5e6f..db293f2ee5a 100644
--- a/cpp/demo/Ice/nrvo/Nrvo.ice
+++ b/cpp/demo/Ice/nrvo/Nrvo.ice
@@ -10,12 +10,12 @@
#ifndef NRVO_ICE
#define NRVO_ICE
+[["cpp:include:MyStringSeq.h"]]
+
module Demo
{
-[["cpp:include:MyStringSeq.h"]]
["cpp:type:MyStringSeq"] sequence<string> StringSeq;
-const int StringSeqSize = 50000;
interface Nrvo
{
diff --git a/cpp/demo/Ice/nrvo/NrvoI.cpp b/cpp/demo/Ice/nrvo/NrvoI.cpp
index dea09e60bed..656a3e400f2 100644
--- a/cpp/demo/Ice/nrvo/NrvoI.cpp
+++ b/cpp/demo/Ice/nrvo/NrvoI.cpp
@@ -8,24 +8,34 @@
// **********************************************************************
#include <Ice/Ice.h>
-#include <iostream>
#include <NrvoI.h>
using namespace std;
NrvoI::NrvoI() :
- _stringSeq(Demo::StringSeqSize, "hello")
+ _stringSeq(10, "hello")
{
}
+//
+// NRVO (Named Return Value Optimization):
+// the return value is a stack-allocated variable,
+// and there is only a single return path.
+//
Demo::StringSeq
NrvoI::op1(const Ice::Current&)
{
cout << "running op1" << endl;
- MyStringSeq seq = MyStringSeq(Demo::StringSeqSize, "hello");
+ //
+ // Not "return MyStringSeq(10, "hello")", since this lacks a name.
+ //
+ MyStringSeq seq = MyStringSeq(10, "hello");
return seq;
}
+//
+// No optimization: the return value is a data member.
+//
Demo::StringSeq
NrvoI::op2(const Ice::Current&)
{
@@ -33,20 +43,30 @@ NrvoI::op2(const Ice::Current&)
return _stringSeq;
}
+
+//
+// Operation with multiple return paths.
+//
Demo::StringSeq
NrvoI::op3(int size, const Ice::Current&)
{
cout << "running op3" << endl;
- MyStringSeq seq;
if(size < 10)
{
+ //
+ // RVO (Return Value Optimization): return value
+ // is constructed in place.
+ //
return MyStringSeq(size, "hello");
}
- seq = MyStringSeq(10, "hello");
+
+ //
+ // No optimization: NRVO requires a single return path.
+ //
+ MyStringSeq seq = MyStringSeq(10, "hello");
return seq;
}
-
void
NrvoI::shutdown(const Ice::Current& c)
{
diff --git a/cpp/demo/Ice/nrvo/NrvoI.h b/cpp/demo/Ice/nrvo/NrvoI.h
index d92931f193d..0328ae6b98a 100644
--- a/cpp/demo/Ice/nrvo/NrvoI.h
+++ b/cpp/demo/Ice/nrvo/NrvoI.h
@@ -20,7 +20,7 @@ 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 Demo::StringSeq op3(int, const Ice::Current&);
virtual void shutdown(const Ice::Current&);
private:
diff --git a/cpp/demo/Ice/nrvo/README b/cpp/demo/Ice/nrvo/README
index 7cfbfe674a6..b2fa42af41e 100644
--- a/cpp/demo/Ice/nrvo/README
+++ b/cpp/demo/Ice/nrvo/README
@@ -1,17 +1,17 @@
+A simple demo that shows how Ice takes advantage of NRVO (Named
+Return Value Optimization), which is implemented by modern C++
+compilers.
-A simple demo that show how Ice take advantage of NRVO
-(Named Return Value Optimization) include in modern c++ compilers.
+GCC and Microsoft Visual Studio compilers support this optimization.
-GCC and Visual Studio compilers support this optimization
+You can read more about Visual Studio NRVO at:
- You could read more about Visual Studio NRVO at:
+ * http://msdn.microsoft.com/en-us/library/ms364057(VS.80).aspx
- * http://msdn.microsoft.com/en-us/library/ms364057(VS.80).aspx
+For GCC, NRVO was first introduced in version 3.1. See the release
+changes at:
- For GCC NRVO was first introduced in gcc-3.1 see the release
- changes at:
-
- * http://www.gnu.org/software/gcc/gcc-3.1/changes.html
+ * http://www.gnu.org/software/gcc/gcc-3.1/changes.html
To run the demo, first start the server:
@@ -21,29 +21,26 @@ In a separate window, start the client:
$ client
-When you start the client it show you a menu with different
-operations, you can invoke each operation pressing the corresponding
-key.
-
-All this operations return a string sequence mapped to a custom class
-MyStringSeq, when a copy is made the message "MyStringSeq copy ctor"
-is wrote to the console, this permit you see what copies of the
-returned data are made by Ice run time.
-
-To make sure the optimizations are applied you should compile the demo
-with optimizations enabled.
-
-If you call an operation the client and server should print a message
-"calling <operation name>" and bellow that message you will see as
-many "MyStringSeq copy ctor" messages as copies are made.
-
-In the server side we show one case when NRVO works, that is a
-function that has a single return path implemented and is
-implementation is NrvoI::op1, and two case where NRVO don't work, a
-function that return a data member of the servant the implementation
-is in NrvoI::op2 and a function with multiple returns path
-implemented in NrvoI::op3.
-
-So if you press option 1 you will see that NRVO is apply in both
-client and server sides, and if you call 2 or 3 the optimization only
-apply to client side.
+The client presents a menu of options that you can invoke by pressing
+the corresponding key. All of these operations return a string
+sequence mapped to the custom class MyStringSeq. This class prints
+the message "MyStringSeq copy ctor" each time it is copied so that you
+can see when copies of the returned data are made by the Ice run time.
+
+With Visual C++, you must compile with optimization for NRVO to be
+enabled. GCC applies NRVO whether the code is optimized or not.
+
+In the server, we show one case when NRVO works: a function that has a
+single return path implemented in NrvoI::op1. There are also two cases
+where NRVO doesn't work: a function that returns a data member of
+the servant (NrvoI::op2) and a function with multiple return paths
+(NrvoI::op3).
+
+Invoking op1 demonstrates that NRVO is applied in both the client and
+the server, whereas for op2 and op3 NRVO is only applied in the
+client.
+
+The client can also invoke op3 such that RVO (Return Value Optimization)
+is applied for a return statement with in-place construction. (See
+http://www.efnetcpp.org/wiki/Return_value_optimization for information
+on RVO.)
diff --git a/cpp/demo/Ice/nrvo/Server.cpp b/cpp/demo/Ice/nrvo/Server.cpp
index 4ab12e580e4..104960f5a1d 100644
--- a/cpp/demo/Ice/nrvo/Server.cpp
+++ b/cpp/demo/Ice/nrvo/Server.cpp
@@ -36,8 +36,7 @@ NrvotServer::run(int argc, char* argv[])
}
Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Nrvo");
- Demo::NrvoPtr servant = new NrvoI();
- adapter->add(servant, communicator()->stringToIdentity("nrvo"));
+ adapter->add(new NrvoI(), 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
index c582c4dd677..7b00352d558 100644
--- a/cpp/demo/Ice/nrvo/config.client
+++ b/cpp/demo/Ice/nrvo/config.client
@@ -1,13 +1,8 @@
#
# The client reads this property to create the reference to the
-# "Throughput" object in the server.
+# "Nrvo" object in the server.
#
-Nrvo.Proxy=nrvo:default -p 10000 -h 127.0.0.1
-
-#
-# Disable client-side ACM.
-#
-Ice.ACM.Client=0
+Nrvo.Proxy=nrvo:default -p 10000
#
# SSL Configuration
diff --git a/cpp/demo/Ice/nrvo/config.server b/cpp/demo/Ice/nrvo/config.server
index 2a90e37a37c..a98f09fe187 100644
--- a/cpp/demo/Ice/nrvo/config.server
+++ b/cpp/demo/Ice/nrvo/config.server
@@ -1,9 +1,9 @@
#
# The server creates one single object adapter with the name
-# "Throughput". The following line sets the endpoints for this
+# "Nrvo". The following line sets the endpoints for this
# adapter.
#
-Nrvo.Endpoints=default -p 10000 -h 127.0.0.1
+Nrvo.Endpoints=default -p 10000
#
# Warn about connection exceptions