libzypp  17.22.0
socketnotifier.cc
Go to the documentation of this file.
1 #include "socketnotifier.h"
3 
4 namespace zyppng {
5 
7 {
9 public:
10 
11  signal<void (const SocketNotifier &, int)> _activated;
12 
13  int _socket = -1;
15  bool _enabled = false;
16 
17 };
18 
19 SocketNotifier::SocketNotifier (int socket, int evTypes , bool enable)
21 {
22  Z_D();
23  d->_socket = socket;
24  d->_mode = evTypes;
25 
26  setEnabled( enable );
27 }
28 
29 SocketNotifier::Ptr SocketNotifier::create(int socket, int evTypes, bool enable )
30 {
31  return std::shared_ptr<SocketNotifier>( new SocketNotifier( socket, evTypes, enable ) );
32 }
33 
35 {
36  Z_D();
37  if ( mode == d->_mode )
38  return;
39 
40  d->_mode = mode;
41 
42  if ( d->_enabled && d->_socket >= 0)
43  updateFdWatch( d->_socket, d->_mode );
44 }
45 
47 {
48  return d_func()->_mode;
49 }
50 
51 void SocketNotifier::setEnabled( bool enabled )
52 {
53  Z_D();
54  if ( enabled == d->_enabled || d->_socket < 0 )
55  return;
56 
57  d->_enabled = enabled;
58 
59  if ( enabled )
60  updateFdWatch( d->_socket, d->_mode );
61  else
62  removeFdWatch( -1 );
63 }
64 
66 {
67  return d_func()->_socket;
68 }
69 
71 {
72  return d_func()->_activated;
73 }
74 
75 void SocketNotifier::onFdReady( int, int events )
76 {
77  d_func()->_activated( *this, events );
78 }
79 
81 { }
82 
83 
84 }
85 
86 
void onSignal(int signal) override
signal< void(const SocketNotifier &, int)> _activated
void onFdReady(int, int events) override
void setMode(int mode)
SocketNotifier(int socket, int evTypes, bool enable)
std::shared_ptr< SocketNotifier > Ptr
static Ptr create(int socket, int evTypes, bool enable=true)
#define Z_D()
Definition: zyppglobal.h:44
void updateFdWatch(int fd, int mode)
void setEnabled(bool enabled=true)
SignalProxy< void(const SocketNotifier &sock, int evTypes)> sigActivated()
#define ZYPP_DECLARE_PUBLIC(Class)
Definition: zyppglobal.h:39