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 > |