glibmm: Gio::SignalSocket Class Reference

#include <giomm/socketsource.h>

Public Member Functions

sigc::connection connect (const sigc::slot< bool(Glib::IOCondition)>& slot, const Glib::RefPtr< Socket >& socket, Glib::IOCondition condition, const Glib::RefPtr< Cancellable >& cancellable={}, int priority=Glib::PRIORITY_DEFAULT)
 Connects an I/O handler that watches a socket. More...


Detailed Description

Member Function Documentation

sigc::connection Gio::SignalSocket::connect ( const sigc::slot< bool(Glib::IOCondition)>&  slot,
const Glib::RefPtr< Socket >&  socket,
Glib::IOCondition  condition,
const Glib::RefPtr< Cancellable >&  cancellable = {},
int  priority = Glib::PRIORITY_DEFAULT 

Connects an I/O handler that watches a socket.

bool io_handler(Glib::IOCondition io_condition) { ... }
Gio::signal_socket().connect(sigc::ptr_fun(& io_handler), socket, Glib::IO_IN | Glib::IO_OUT);

is equivalent to:

bool io_handler(Glib::IOCondition io_condition) { ... }
const auto socket_source = Gio::SocketSource::create(socket, Glib::IO_IN | Glib::IO_OUT);
socket_source->connect(sigc::ptr_fun(& io_handler));

This method is not thread-safe. You should call it, or manipulate the returned sigc::connection object, only from the thread where the SignalSocket object's MainContext runs.

Since glibmm 2.42:
slotA slot to call when polling socket results in an event that matches condition. The event will be passed as a parameter to slot. If io_handler() returns false the handler is disconnected.
socketThe Socket object to watch.
conditionThe conditions to watch for.
cancellableA Cancellable object which can be used to cancel the source, which will cause the source to trigger, reporting the current condition (which is likely 0 unless cancellation happened at the same time as a condition change). You can check for this in the callback using Cancellable::is_cancelled().
priorityThe priority of the new event source.
A connection handle, which can be used to disconnect the handler.