From fefe5c503a8bec0882443e994db64f916f806b5e Mon Sep 17 00:00:00 2001 From: Jose Date: Tue, 11 Nov 2014 22:33:50 +0100 Subject: Fixed (ICE-5857) rename manual -> Manual --- cpp/demo/Manual/simple_filesystem/Client.cpp | 109 +++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 cpp/demo/Manual/simple_filesystem/Client.cpp (limited to 'cpp/demo/Manual/simple_filesystem/Client.cpp') diff --git a/cpp/demo/Manual/simple_filesystem/Client.cpp b/cpp/demo/Manual/simple_filesystem/Client.cpp new file mode 100644 index 00000000000..3568c39d202 --- /dev/null +++ b/cpp/demo/Manual/simple_filesystem/Client.cpp @@ -0,0 +1,109 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2014 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 +#include +#include +#include + +using namespace std; +using namespace Filesystem; + +// Recursively print the contents of directory "dir" in tree fashion. +// For files, show the contents of each file. The "depth" +// parameter is the current nesting level (for indentation). + +static void +listRecursive(const DirectoryPrx& dir, int depth = 0) +{ + string indent(++depth, '\t'); + + NodeSeq contents = dir->list(); + + for(NodeSeq::const_iterator i = contents.begin(); i != contents.end(); ++i) + { + DirectoryPrx dir = DirectoryPrx::checkedCast(*i); + FilePrx file = FilePrx::uncheckedCast(*i); + cout << indent << (*i)->name() << (dir ? " (directory):" : " (file):") << endl; + if(dir) + { + listRecursive(dir, depth); + } + else + { + Lines text = file->read(); + for(Lines::const_iterator j = text.begin(); j != text.end(); ++j) + { + cout << indent << "\t" << *j << endl; + } + } + } +} + +int +main(int argc, char* argv[]) +{ + int status = 0; + Ice::CommunicatorPtr ic; + try + { + // + // Create a communicator + // + ic = Ice::initialize(argc, argv); + + // + // Create a proxy for the root directory + // + Ice::ObjectPrx base = ic->stringToProxy("RootDir:default -h localhost -p 10000"); + + // + // Down-cast the proxy to a Directory proxy + // + DirectoryPrx rootDir = DirectoryPrx::checkedCast(base); + if(!rootDir) + { + throw "Invalid proxy"; + } + + // + // Recursively list the contents of the root directory + // + cout << "Contents of root directory:" << endl; + listRecursive(rootDir); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + status = 1; + } + catch(const char* msg) + { + cerr << msg << endl; + status = 1; + } + + // + // Clean up + // + if(ic) + { + try + { + ic->destroy(); + } + catch(const Ice::Exception& e) + { + cerr << e << endl; + status = 1; + } + } + + return status; +} -- cgit v1.2.3