libzypp 17.37.17
socketnotifier.cc
Go to the documentation of this file.
1#include "socketnotifier.h"
3
4namespace zyppng {
5
21
22
24
27{
28 Z_D();
29 d->_socket = socket;
30 d->_mode = evTypes;
31}
32
33SocketNotifier::Ptr SocketNotifier::create(int socket, int evTypes, bool enable )
34{
35 auto ptr = std::shared_ptr<SocketNotifier>( new SocketNotifier( socket, evTypes ) );
36 ptr->setEnabled( enable );
37 return ptr;
38}
39
41{
42 Z_D();
43 if ( mode == d->_mode )
44 return;
45
46 d->_mode = mode;
47
48 if ( d->_enabled && d->_socket >= 0)
49 updateFdWatch( d->_socket, d->_mode );
50}
51
53{
54 return d_func()->_mode;
55}
56
57void SocketNotifier::setEnabled( bool enabled )
58{
59 Z_D();
60 if ( enabled == d->_enabled || d->_socket < 0 )
61 return;
62
63 d->_enabled = enabled;
64
65 if ( enabled )
66 updateFdWatch( d->_socket, d->_mode );
67 else
68 removeFdWatch( -1 );
69}
70
72{
73 return d_func()->_socket;
74}
75
77{
78 return d_func()->_activated;
79}
80
81void SocketNotifier::onFdReady( int, int events )
82{
83 d_func()->_activated.emit( *this, events );
84}
85
87{ }
88
89
90}
91
92
AbstractEventSourcePrivate(AbstractEventSource &p)
void updateFdWatch(int fd, int mode)
SocketNotifierPrivate(SocketNotifier &p)
Signal< void(const SocketNotifier &, int)> _activated
SocketNotifier(int socket, int evTypes)
std::shared_ptr< SocketNotifier > Ptr
void onSignal(int signal) override
static Ptr create(int socket, int evTypes, bool enable=true)
void onFdReady(int, int events) override
SignalProxy< void(const SocketNotifier &sock, int evTypes)> sigActivated()
void setEnabled(bool enabled=true)
#define ZYPP_IMPL_PRIVATE(Class)
Definition zyppglobal.h:92
#define Z_D()
Definition zyppglobal.h:105
#define ZYPP_DECLARE_PUBLIC(Class)
Definition zyppglobal.h:98