Re: [Cppcms-users] Design decision
Brought to you by:
artyom-beilis
|
From: Christian G. <chr...@gm...> - 2012-10-04 12:46:46
|
2012/10/4 Artyom Beilis <art...@ya...>:
> Read more about std::bind / boost::bind
>
> netlink.on_readable(std::bind(&Netlink::read));
>
> should be
>
>
> netlink.on_readable(std::bind(&Netlink::read,&netlink,std::placeholders::_1));
>
> But if you already use C++11...
I am using it to get std::bind (gcc version 4.6.3) as I don't wand an
other dependency
only to get bind working.
>
> netlink.on_readable( [&](booster::system::error_code const &e) {
> netlink.read(e);
> });
>
> Much easier to understand.
>
I really should have a closer look at C++11...
thanks
---
Christian Gmeiner MSc
> Artyom Beilis
> --------------
> CppCMS - C++ Web Framework: http://cppcms.com/
> CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/
>
> ________________________________
> From: Christian Gmeiner <chr...@gm...>
> To: Artyom Beilis <art...@ya...>; cpp...@li...
> Sent: Thursday, October 4, 2012 2:11 PM
> Subject: Re: [Cppcms-users] Design decision
>
> 2012/10/4 Artyom Beilis <art...@ya...>:
>>>________________________________
>>
>>> From: Christian Gmeiner <chr...@gm...>
>>>To: cpp...@li...
>>>Sent: Thursday, October 4, 2012 11:01 AM
>>>Subject: [Cppcms-users] Design decision
>>>
>>>Hi all.
>>>
>>>My cppcms based web application is in a quite good shape and I got
>>>some ideas what
>>>new features could be added.
>>>
>>>+ Detection of networking changes via PF_NETLINK socket
>>>
>>>At the moment it is possible to configure networking settings via
>>>cppcms. For instance,
>>>it is possible to use manual mode for an ethernet interface to specify
>>>ip. netmask etc. or
>>>use DHCP mode. If DHCP gets used the running system starts dhcp client
>>>and it could
>>>takes some seconds until it got a valid IP address.
>>>
>>>The basic idea is now to use SSE (server send events) and some
>>>detection threads.
>>>
>>>Create a (cppcms ?) thread per ethernet interface and run something like
>>>http://stackoverflow.com/questions/579783/how-to-detect-ip-address-change-programmatically-in-linux
>>>
>>>Then I would have a singleton class for SSE where I can call e.g.
>>>SSE::instance()->ethernet("eth0", ip,...) and my front-end can update
>>>the values.
>>>
>>>Can this work?
>>>
>>>
>>>---
>>>Christian Gmeiner, MSc
>>>
>>
>> Why not?
>>
>> Several points
>>
>> 1. In there link there is an example to use it without polling, so just
>> use basic_io_device to check
>> for readability and then call recv
>>
>> So basically you don't need threads just implement event driven
>> handling in the event loop (see tutorial for examples)
>>
>
> This looks like the elegant solution I am looking for :)
>
> But... I don't get it up and running :/
>
> I decided to go this way:
>
> #ifndef NETLINK_H_
> #define NETLINK_H_
>
> #include <booster/aio/basic_io_device.h>
>
> class Netlink : public booster::aio::basic_io_device
> {
> public:
> Netlink();
> ~Netlink();
>
> void read(booster::system::error_code const &e);
>
> private:
> char _buffer[4096];
> };
>
> #endif /* NETLINK_H_ */
>
>
> And this is my main()
>
> // start cppcms service
> try
> {
> cppcms::service srv(argc, argv);
>
> booster::aio::io_service &io_srv = srv.get_io_service();
>
> Netlink netlink;
> netlink.set_io_service(io_srv);
> netlink.on_readable(std::bind(&Netlink::read));
>
> srv.applications_pool().mount(cppcms::applications_factory<Tssw>());
> srv.run();
> }
> catch (std::exception const &e)
> {
> std::cerr << e.what() << std::endl;
> }
>
>
> The big big problem is how should I use on_readable(..) ? The above example
> does
> not compile.
>
> ----
> Christian Gmeiner, MSc
>
> ------------------------------------------------------------------------------
> Don't let slow site performance ruin your business. Deploy New Relic APM
> Deploy New Relic app performance management and know exactly
> what is happening inside your Ruby, Python, PHP, Java, and .NET app
> Try New Relic at no cost today and get our sweet Data Nerd shirt too!
> http://p.sf.net/sfu/newrelic-dev2dev
> _______________________________________________
> Cppcms-users mailing list
> Cpp...@li...
> https://lists.sourceforge.net/lists/listinfo/cppcms-users
>
>
>
> ------------------------------------------------------------------------------
> Don't let slow site performance ruin your business. Deploy New Relic APM
> Deploy New Relic app performance management and know exactly
> what is happening inside your Ruby, Python, PHP, Java, and .NET app
> Try New Relic at no cost today and get our sweet Data Nerd shirt too!
> http://p.sf.net/sfu/newrelic-dev2dev
> _______________________________________________
> Cppcms-users mailing list
> Cpp...@li...
> https://lists.sourceforge.net/lists/listinfo/cppcms-users
>
|