|
Boost : |
Subject: [boost] Boost.Application
From: Renato Tegon Forti (re.tf_at_[hidden])
Date: 2012-01-25 16:57:32
Hi All,
I have the first prototype of the "Boost.Application" ready!
I would like to receive comments so I can refine the library. Please send
your feedback to re.tf_at_[hidden]
0) Introduction
A Boost.Application allows a developer run your application as a Windows
service, as a Unix/Linux daemon, or as a usual interactive application
(terminal) without the need to add extra code, the library abstract OS
specific API and provide a ease common interface.
In case of server application, developer need only compile your code on a
Windows to have a ready to play Windows Service or in a UNIX/Linux to have
Daemon.
CTRL-C signals and SCM (Service Control Manager) controls handlers are
available for terminating, pause/resume(windows) the application
constructively and many other until methods are available in application
class like a single instance running limitation!
1) Download:
https://sourceforge.net/projects/boostapp/
2) Installation:
The library is one: Automatic linking
You should unpack the files and copy:
Boost.Application_pre_alpha_1\boost\application
To:
boost_1_48_0\boost
and,
Boost.Application_pre_alpha_1\libs\application
To:
boost_1_48_0\libs
3) Build
Then you must build, for example (in windows):
bjam toolset=msvc-9.0 variant=debug threading=multi link=shared
define=_BIND_TO_CURRENT_VCLIBS_VERSION
4) Documentation
The project has an incomplete documentation:
Boost.Application_pre_alpha_1\libs\application\doc\html\index.html
5) Use
however, the tutorial explains how to use the lib, and that generally goes
like this:
----------------------------------------------------------------------------
--------------------
#include <boost/application/engine.hpp>
class myapp : public boost::application::application
{
protected:
int main(const std::vector<std::string>& args)
{
// your application logic here!
while(1)
{
std::cout << "Hello Boost.Application!" << std::endl;
// ...
if(state() == boost::application::application_stoped)
{
break;
}
}
return 0;
}
};
BOOST_APP(myapp, "MainTutorial1", "Boost.Application Main Tutorial 1!",
boost::application::default_application_type, 1, 0, 1)
----------------------------------------------------------------------------
--------------------
The folder:
Boost.Application_pre_alpha_1\libs\application\example\tutorial
Has all tutorial files!
I tested the lib on Windows VC9 (Windows Service) and Ubuntu 11 GCC 4
(Daemon)!
6) Questions:
* Is there any interest in this library?
* If Yes! What are the refinements? (see todo, for some)
Please send your feedback to re.tf_at_[hidden]
Thanks to all
Renato
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk