-
Notifications
You must be signed in to change notification settings - Fork 6
/
file_monitor_service.hpp
62 lines (50 loc) · 1.84 KB
/
file_monitor_service.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#pragma once
#include <boost/asio.hpp>
#include <boost/shared_ptr.hpp>
#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
# include "inotify/file_monitor_service.hpp"
#else
# error "Platform not supported."
#endif
namespace services
{
class file_monitor_service :
public boost::asio::io_service::service
{
private:
typedef detail::file_monitor_service service_impl_type;
public:
typedef service_impl_type::implementation_type implementation_type;
static boost::asio::io_service::id id;
explicit file_monitor_service ( boost::asio::io_service& io_service ) :
boost::asio::io_service::service( io_service ),
service_impl_( io_service )
{
}
void construct( implementation_type& impl )
{
service_impl_.construct( impl );
}
void destroy( implementation_type& impl )
{
service_impl_.destroy( impl );
}
void add_file ( implementation_type& impl, const std::string& file, boost::system::error_code& ec )
{
service_impl_.add_file( impl, file, ec );
}
template <typename MonHandler>
void async_monitor ( implementation_type& impl, boost::system::error_code& ec, BOOST_ASIO_MOVE_ARG( MonHandler ) handler )
{
service_impl_.async_monitor( impl, ec, BOOST_ASIO_MOVE_CAST(MonHandler)(handler) );
}
private:
void shutdown_service()
{
service_impl_.shutdown_service();
}
private:
service_impl_type service_impl_;
};
boost::asio::io_service::id file_monitor_service::id;
}