signal-scoped-connection.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
23 
24 namespace ndn {
25 namespace util {
26 namespace signal {
27 
28 #if NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
29 static_assert(std::is_nothrow_move_constructible<ScopedConnection>::value,
30  "ScopedConnection must be MoveConstructible with noexcept");
31 #endif // NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
32 
34 {
35 }
36 
38  : m_connection(connection)
39 {
40 }
41 
43  : m_connection(other.m_connection)
44 {
45  other.release();
46 }
47 
50 {
51  if (m_connection != connection) {
52  m_connection.disconnect();
53  m_connection = connection;
54  }
55  return *this;
56 }
57 
59 {
60  m_connection.disconnect();
61 }
62 
63 void
65 {
66  m_connection.disconnect();
67 }
68 
69 bool
71 {
72  return m_connection.isConnected();
73 }
74 
75 void
77 {
78  m_connection = {};
79 }
80 
81 } // namespace signal
82 } // namespace util
83 } // namespace ndn
Copyright (c) 2013-2016 Regents of the University of California.
Definition: common.hpp:74
~ScopedConnection() noexcept
disconnects the connection
bool isConnected() const
check if the connection is connected to the signal
represents a connection to a signal
ScopedConnection & operator=(const Connection &connection)
assigns a connection
void disconnect()
disconnects from the signal
void release()
releases the connection so that it won't be disconnected when this ScopedConnection is destructed ...
bool isConnected() const
check if connected to the signal
disconnects a Connection automatically upon destruction
void disconnect()
disconnects the connection manually