/* Copyright (C) 2010 Jonathon Jongsma
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see .
*/
#include
#include
#include
#include
#include
_DEFS(giomm,gio)
_PINCLUDE(glibmm/private/object_p.h)
namespace Gio
{
/**
* Helper for accepting network client connections
*
* @see ThreadedSocketService, SocketService.
*
* A SocketListener is an object that keeps track of a set
* of server sockets and helps you accept sockets from any of the
* socket, either sync or async.
*
* If you want to implement a network server, also look at SocketService
* and ThreadedSocketService which are subclass of SocketListener
* that makes this even easier.
*
* @newin{2,24}
* @ingroup NetworkIO
*/
class GIOMM_API SocketListener : public Glib::Object
{
_CLASS_GOBJECT(SocketListener, GSocketListener, G_SOCKET_LISTENER, Glib::Object, GObject, , , GIOMM_API)
protected:
_CTOR_DEFAULT
public:
_WRAP_CREATE()
_WRAP_METHOD(void set_backlog(int listen_backlog), g_socket_listener_set_backlog)
_WRAP_METHOD(bool add_socket(const Glib::RefPtr& socket, const Glib::RefPtr& source_object), g_socket_listener_add_socket, errthrow)
//TODO: The use of WRAP_METHOD_DOCS_ONLY here is almost certainly not good enough.
//Check the HTML actually outputed and probably hand-code them as for Gio::File.
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_add_socket)
bool add_socket(const Glib::RefPtr& socket);
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_add_address)
bool add_address(const Glib::RefPtr& address, Socket::Type type, Socket::Protocol protocol, const Glib::RefPtr& source_object, Glib::RefPtr& effective_address);
_IGNORE(g_socket_listener_add_address)
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_add_address)
bool add_address(const Glib::RefPtr& address, Socket::Type type, Socket::Protocol protocol, Glib::RefPtr& effective_address);
_WRAP_METHOD(bool add_inet_port(guint16 port, const Glib::RefPtr& source_object), g_socket_listener_add_inet_port, errthrow)
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_add_inet_port)
bool add_inet_port(guint16 port);
_WRAP_METHOD(guint16 add_any_inet_port(const Glib::RefPtr& source_object), g_socket_listener_add_any_inet_port, errthrow)
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_add_any_inet_port)
guint16 add_any_inet_port();
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket)
Glib::RefPtr accept_socket(Glib::RefPtr& source_object, const Glib::RefPtr& cancellable);
_IGNORE(g_socket_listener_accept_socket)
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket)
Glib::RefPtr accept_socket(Glib::RefPtr& source_object);
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket)
Glib::RefPtr accept_socket(const Glib::RefPtr& cancellable);
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket)
Glib::RefPtr accept_socket();
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket_async)
void accept_socket_async(const Glib::RefPtr& cancellable, const SlotAsyncReady& slot);
_IGNORE(g_socket_listener_accept_socket_async)
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket_async)
void accept_socket_async(const SlotAsyncReady& slot);
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket_finish)
Glib::RefPtr accept_socket_finish(const Glib::RefPtr& result, Glib::RefPtr& source_object);
_IGNORE(g_socket_listener_accept_socket_finish)
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket_finish)
Glib::RefPtr accept_socket_finish(const Glib::RefPtr& result);
_WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept)
Glib::RefPtr accept(Glib::RefPtr