From e522f90513742e53de23208e528b62afba5def66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Obiltschnig?= Date: Mon, 27 Jan 2020 10:46:55 +0100 Subject: [PATCH] updated tour --- PocoDoc/resources/images/poco.png | Bin 16388 -> 30785 bytes doc/00100-GuidedTour.page | 148 +++++++++++++----------------- 2 files changed, 65 insertions(+), 83 deletions(-) diff --git a/PocoDoc/resources/images/poco.png b/PocoDoc/resources/images/poco.png index 160e29d742737c844d578f7fc4425b493bc61760..d400f7206887686c67233aa7b7eab44b6345e6d9 100644 GIT binary patch literal 30785 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 literal 16388 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¬KW8 z(M2;os``#uRGCMwma>M2m9;aPwMAsT3|-@)QR#7ru9~r?>N~7eB}F!5jR&nVLy+01 z%8G0lz-iQX%vVWF$?ud7Ich_Tpc_4N!);u8qzkJYbe4Lzo>@%2dPs^|!n0PDWmyk1 z$d9U%u_g)HsCy^D&LAhXvr(tVAUv{2#*U#zhP+=f$?uf1=13*I`ATqZn%bj3_qg!@ zfErG#R=cI^xx=#<=vmXkV~%fR%@$K|qa@G_M(0+;Gl-pf=FswD z%6)a}29T5sbs6GL6V&zDm2p;A3?5Hw>XfBf9mS9R$E!qWtZATsk-X3 zAqxa)(H$~004kG*jkW{R=ydWfS$j#j@F~r*OQrhe)9J%asX}GsdoaTPFTem{86;1o S$M!A&0000 - + using Poco::BasicEvent; - using Poco::Delegate; - + using Poco::delegate; + class Source { public: BasicEvent theEvent; - + void fireEvent(int n) { theEvent(this, n); } }; - + class Target { public: @@ -90,20 +90,18 @@ and a pointer to a member function. The event can be fired by calling std::cout << "onEvent: " << arg << std::endl; } }; - + int main(int argc, char** argv) { Source source; Target target; - - source.theEvent += Delegate( - &target, &Target::onEvent); - + + source.theEvent += delegate(&target, &Target::onEvent); + source.fireEvent(42); - - source.theEvent -= Delegate( - &target, &Target::onEvent); - + + source.theEvent -= delegate(&target, &Target::onEvent); + return 0; } ---- @@ -111,7 +109,7 @@ and a pointer to a member function. The event can be fired by calling The stream classes available in POCO have already been mentioned. These are augmented by Poco::BinaryReader and Poco::BinaryWriter for writing binary data to -streams, automatically and transparently handling byte order issues. +streams, automatically and transparently handling byte order issues. In complex multithreaded applications, the only way to find problems or bugs is by writing extensive logging information. POCO provides a @@ -120,7 +118,7 @@ routing to different channels, and formatting of log messages. Log messages can be written to the console, a file, the Windows Event Log, the Unix syslog daemon, or to the network. If the channels provided by POCO are not sufficient, it is easy to extend the logging framework with -new classes. +new classes. For loading (and unloading) shared libraries at runtime, POCO has a low-level Poco::SharedLibrary class. Based on it is the Poco::ClassLoader @@ -128,13 +126,13 @@ class template and supporting framework, allowing dynamic loading and unloading of C++ classes at runtime, similar to what's available to Java and .NET developers. The class loader framework also makes it a breeze to implement plug-in support for applications in a platform-independent -way. +way. Finally, POCO Foundation contains multithreading abstractions at different levels. Starting with a Poco::Thread class and the usual -synchronization primitives (Poco::Mutex, Poco::ScopedLock, Poco::Event, -Poco::Semaphore, Poco::RWLock), a Poco::ThreadPool class and support for -thread-local storage, also high level abstractions like active objects are +synchronization primitives (Poco::Mutex, Poco::ScopedLock, Poco::Event, +Poco::Semaphore, Poco::RWLock), a Poco::ThreadPool class and support for +thread-local storage, also high level abstractions like active objects are available. Simply speaking, an active object is an object that has methods executing in their own thread. This makes asynchronous member function calls possible -- call a member function, while the function executes, do a bunch of @@ -149,35 +147,35 @@ function's return value. #include "Poco/ActiveResult.h" #include #include - + using Poco::ActiveMethod; using Poco::ActiveResult; - + class ActiveAdder { public: ActiveAdder(): add(this, &ActiveAdder::addImpl) { } - + ActiveMethod, ActiveAdder> add; - + private: int addImpl(const std::pair& args) { return args.first + args.second; } }; - + int main(int argc, char** argv) { ActiveAdder adder; - + ActiveResult sum = adder.add(std::make_pair(1, 2)); // do other things sum.wait(); std::cout << sum.data() << std::endl; - + return 0; } ---- @@ -196,14 +194,14 @@ reads through the XML document and notifies the application whenever it encounters an element, character data, or other XML artifact. A SAX parser does not need to load the complete XML document into memory, so it can be used to parse huge XML files efficiently. In contrast, DOM -(Document Object Model, http://www.w3.org/DOM/) gives the application +(Document Object Model, http://www.w3.org/DOM/) gives the application complete access to an XML document, using a tree-style object hierarchy. For this to work, the DOM parser provided by POCO has to load the entire document into memory. To reduce the memory footprint of the DOM document, the POCO DOM implementation uses string pooling, storing frequently occuring strings such as element and attribute names only once. The XML library is based -on the Expat open source XML parser library (http://www.libexpat.org). +on the Expat open source XML parser library (http://www.libexpat.org). Built on top of Expat are the SAX interfaces, and built on top of the SAX interfaces is the DOM implementation. For strings, the XML library uses <[std::string]>, with @@ -220,7 +218,7 @@ Included is support for handling command line arguments (validation, binding to configuration properties, etc.) and managing configuration information. Different configuration file formats are supported -- Windows-style INI files, Java-style property files, XML files and the -Windows registry. +Windows registry. For server applications, the framework provides transparent support for Windows services and Unix daemons. Every server @@ -234,18 +232,18 @@ executed from the command line, which makes testing and debugging easier. POCO's Net library makes it easy to write network-based applications. No matter whether your application simply needs to send data over a plain TCP socket, or whether your application needs a full-fledged built-in -HTTP server, you will find something useful in the Net library. +HTTP server, you will find something useful in the Net library. At the lowest level, the Net library contains socket classes, supporting TCP stream and server sockets, UDP sockets, multicast sockets, ICMP and raw sockets. If your application needs secure sockets, these are available -in the NetSSL library, implemented using OpenSSL (http://www.openssl.org). +in the NetSSL library, implemented using OpenSSL (http://www.openssl.org). Based on the socket classes are two frameworks for building TCP servers -- one for multithreaded servers (one thread per connection, taken from a thread pool), one for servers based on the Acceptor-Reactor pattern. The multithreaded Poco::Net::TCPServer class and its supporting framework are also the -foundation for POCO's HTTP server implementation (Poco::Net::HTTPServer). -On the client side, the Net library provides classes for talking to HTTP servers, +foundation for POCO's HTTP server implementation (Poco::Net::HTTPServer). +On the client side, the Net library provides classes for talking to HTTP servers, for sending and receiving files using the FTP protocol, for sending mail messages (including attachments) using SMTP and for receiving mail from a POP3 server. @@ -289,7 +287,7 @@ server. #include "Poco/Util/OptionSet.h" #include "Poco/Util/HelpFormatter.h" #include - + using Poco::Net::ServerSocket; using Poco::Net::HTTPRequestHandler; using Poco::Net::HTTPRequestHandlerFactory; @@ -307,27 +305,26 @@ server. using Poco::Util::OptionSet; using Poco::Util::OptionCallback; using Poco::Util::HelpFormatter; - + class TimeRequestHandler: public HTTPRequestHandler { public: TimeRequestHandler(const std::string& format): _format(format) { } - - void handleRequest(HTTPServerRequest& request, - HTTPServerResponse& response) + + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) { Application& app = Application::instance(); - app.logger().information("Request from " - + request.clientAddress().toString()); - + app.logger().information("Request from %s", + request.clientAddress().toString()); + Timestamp now; std::string dt(DateTimeFormatter::format(now, _format)); - + response.setChunkedTransferEncoding(true); response.setContentType("text/html"); - + std::ostream& ostr = response.send(); ostr << "HTTPTimeServer powered by " "POCO C++ Libraries"; @@ -337,11 +334,11 @@ server. ostr << dt; ostr << "

"; } - + private: std::string _format; }; - + class TimeRequestHandlerFactory: public HTTPRequestHandlerFactory { public: @@ -349,47 +346,32 @@ server. _format(format) { } - - HTTPRequestHandler* createRequestHandler( - const HTTPServerRequest& request) + + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) { if (request.getURI() == "/") return new TimeRequestHandler(_format); else return 0; } - + private: std::string _format; }; - + class HTTPTimeServer: public Poco::Util::ServerApplication { - public: - HTTPTimeServer(): _helpRequested(false) - { - } - - ~HTTPTimeServer() - { - } - protected: void initialize(Application& self) { loadConfiguration(); ServerApplication::initialize(self); } - - void uninitialize() - { - ServerApplication::uninitialize(); - } - + void defineOptions(OptionSet& options) { ServerApplication::defineOptions(options); - + options.addOption( Option("help", "h", "display argument help information") .required(false) @@ -397,9 +379,8 @@ server. .callback(OptionCallback( this, &HTTPTimeServer::handleHelp))); } - - void handleHelp(const std::string& name, - const std::string& value) + + void handleHelp(const std::string& name, const std::string& value) { HelpFormatter helpFormatter(options()); helpFormatter.setCommand(commandName()); @@ -410,19 +391,20 @@ server. stopOptionsProcessing(); _helpRequested = true; } - + int main(const std::vector& args) { if (!_helpRequested) { - unsigned short port = (unsigned short) - config().getInt("HTTPTimeServer.port", 9980); - std::string format( - config().getString("HTTPTimeServer.format", - DateTimeFormat::SORTABLE_FORMAT)); - + unsigned short port = static_cast( + config().getInt("HTTPTimeServer.port", 9980)); + std::string format(config().getString( + "HTTPTimeServer.format", + DateTimeFormat::SORTABLE_FORMAT)); + ServerSocket svs(port); - HTTPServer srv(new TimeRequestHandlerFactory(format), + HTTPServer srv( + new TimeRequestHandlerFactory(format), svs, new HTTPServerParams); srv.start(); waitForTerminationRequest(); @@ -430,11 +412,11 @@ server. } return Application::EXIT_OK; } - + private: - bool _helpRequested; + bool _helpRequested = false; }; - + int main(int argc, char** argv) { HTTPTimeServer app;