From ae6c44ee7d68e18ed366b8a2c0dc2bc548035d22 Mon Sep 17 00:00:00 2001 From: Pedro Berrocal Date: Tue, 31 Jul 2018 21:06:18 +0200 Subject: [PATCH] Initial commit --- README.md | 33 +++++++++++++++++++++++++++++++++ src/Printer.ice | 7 +++++++ src/Server.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 README.md create mode 100644 src/Printer.ice create mode 100644 src/Server.cpp diff --git a/README.md b/README.md new file mode 100644 index 0000000..0001253 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# Magic World Server + +### Install ZeroC Ice on Ubuntu 16.04 +``` +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv B6391CB2CFBA643D +sudo apt-add-repository "deb http://zeroc.com/download/Ice/3.7/ubuntu16.04 stable main" +sudo apt-get update +``` + +Install Ice for C++, Java, Python, PHP, and all Ice services +``` +sudo apt-get install zeroc-ice-all-runtime zeroc-ice-all-dev +``` + +Install Freeze for C++ +``` +sudo apt-get install libzeroc-freeze-dev zeroc-freeze-utils +``` + +### Generate headers +``` +slice2cpp Printer.ice +``` + +### Compile +``` +c++ -std=c++11 -pthread -I. -DICE_CPP11_MAPPING -c Printer.cpp Server.cpp +``` + +### Link +``` +c++ -pthread -o server Printer.o Server.o -lIce++11 +``` diff --git a/src/Printer.ice b/src/Printer.ice new file mode 100644 index 0000000..610a9e8 --- /dev/null +++ b/src/Printer.ice @@ -0,0 +1,7 @@ +module Demo +{ + interface Printer + { + void printString(string s); + } +} \ No newline at end of file diff --git a/src/Server.cpp b/src/Server.cpp new file mode 100644 index 0000000..b5a4803 --- /dev/null +++ b/src/Server.cpp @@ -0,0 +1,38 @@ +#include +#include + +using namespace std; +using namespace Demo; + +class PrinterI : public Printer +{ +public: + virtual void printString(string s, const Ice::Current&) override; +}; + +void +PrinterI::printString(string s, const Ice::Current&) +{ + cout << s << endl; +} + +int +main(int argc, char* argv[]) +{ + try + { + Ice::CommunicatorHolder ich(argc, argv); + // Server implementation here ... + auto adapter = ich->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000"); + auto servant = make_shared(); + adapter->add(servant, ich->stringToIdentity("SimplePrinter")); + adapter->activate(); + ich->waitForShutdown(); + } + catch(const std::exception& e) + { + cerr << e.what() << endl; + return 1; + } + return 0; +}