diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2012-11-20 10:57:44 -0330 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2012-11-20 10:57:44 -0330 |
commit | 4c5255c1ab05da2a775f9e01b2da2143741df3d2 (patch) | |
tree | 502e839455de10c62c500612159425a6964fdfdd /cpp/demo/Ice/value/Client.cpp | |
parent | ICE-4965: added Python Ice/metrics demo (diff) | |
download | ice-4c5255c1ab05da2a775f9e01b2da2143741df3d2.tar.bz2 ice-4c5255c1ab05da2a775f9e01b2da2143741df3d2.tar.xz ice-4c5255c1ab05da2a775f9e01b2da2143741df3d2.zip |
ICE-4963 added example of "preserve-slice" to value demo
Diffstat (limited to 'cpp/demo/Ice/value/Client.cpp')
-rw-r--r-- | cpp/demo/Ice/value/Client.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/cpp/demo/Ice/value/Client.cpp b/cpp/demo/Ice/value/Client.cpp index 1b5c6ca7591..7535b690e96 100644 --- a/cpp/demo/Ice/value/Client.cpp +++ b/cpp/demo/Ice/value/Client.cpp @@ -9,6 +9,7 @@ #include <Ice/Ice.h> #include <Value.h> +#include <ValueI.h> #include <ObjectFactory.h> using namespace std; @@ -156,6 +157,24 @@ ValueClient::run(int argc, char* argv[]) derived->printUppercase(); cout << '\n' + << "Now let's make sure that slice is preserved with [\"preserve-slice\"]\n" + << "metadata. We create a derived type on the client and pass it to the\n" + << "server, which does not have a factory for the derived type. We do a\n" + << "dynamic_cast<> to make sure we can still access the derived type when\n" + << "it has been returned from the server.\n" + << "[press enter]\n"; + cin.getline(c, 2); + + ClientPrinterPtr clientp = new ClientPrinterI; + clientp->message = "a message 4 u"; + communicator()->addObjectFactory(factory, Demo::ClientPrinter::ice_staticId()); + + derivedAsBase = initial->updatePrinterMessage(clientp); + clientp = ClientPrinterPtr::dynamicCast(derivedAsBase); + assert(clientp); + cout << "==> " << clientp->message << endl; + + cout << '\n' << "Finally, we try the same again, but instead of returning the\n" << "derived object, we throw an exception containing the derived\n" << "object.\n" |