// -*- c++ -*- // Generated by gmmproc 2.46.3 -- DO NOT MODIFY! #ifndef _GIOMM_THREADEDSOCKETSERVICE_H #define _GIOMM_THREADEDSOCKETSERVICE_H #include #include // -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 2 -*- /* 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, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GThreadedSocketService GThreadedSocketService; typedef struct _GThreadedSocketServiceClass GThreadedSocketServiceClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gio { class ThreadedSocketService_Class; } // namespace Gio #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gio { /** * A threaded GSocketService * * A ThreadedSocketService is a simple subclass of SocketService * that handles incoming connections by creating a worker thread and * dispatching the connection to it by emitting the run signal in * the new thread. * * The signal handler may perform blocking IO and need not return * until the connection is closed. * * The service is implemented using a thread pool, so there is a * limited amount of threads availible to serve incomming requests. * The service automatically stops the SocketService from accepting * new connections when all threads are busy. * * As with SocketService, you may connect to ThreadedSocketService::signal_run(), * or subclass and override the default handler. * * @newin{2,24} * @ingroup NetworkIO */ class ThreadedSocketService : public Gio::SocketService { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: typedef ThreadedSocketService CppObjectType; typedef ThreadedSocketService_Class CppClassType; typedef GThreadedSocketService BaseObjectType; typedef GThreadedSocketServiceClass BaseClassType; // noncopyable ThreadedSocketService(const ThreadedSocketService&) = delete; ThreadedSocketService& operator=(const ThreadedSocketService&) = delete; private: friend class ThreadedSocketService_Class; static CppClassType threadedsocketservice_class_; protected: explicit ThreadedSocketService(const Glib::ConstructParams& construct_params); explicit ThreadedSocketService(GThreadedSocketService* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: ThreadedSocketService(ThreadedSocketService&& src) noexcept; ThreadedSocketService& operator=(ThreadedSocketService&& src) noexcept; virtual ~ThreadedSocketService() noexcept; /** Get the GType for this class, for use with the underlying GObject type system. */ static GType get_type() G_GNUC_CONST; #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GObject. GThreadedSocketService* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GThreadedSocketService* gobj() const { return reinterpret_cast(gobject_); } ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. GThreadedSocketService* gobj_copy(); private: protected: explicit ThreadedSocketService(int max_threads); public: static Glib::RefPtr create(int max_threads); /** * @par Slot Prototype: * bool on_my_%run(const Glib::RefPtr& connection, const Glib::RefPtr& source_object) * * The signal_run() signal is emitted in a worker thread in response to an * incoming connection. This thread is dedicated to handling * @a connection and may perform blocking IO. The signal handler need * not return until the connection is closed. * * @param connection A new SocketConnection object. * @param source_object The source_object passed to g_socket_listener_add_address(). * @return true to stop further signal handlers from being called. */ Glib::SignalProxy2< bool,const Glib::RefPtr&,const Glib::RefPtr& > signal_run(); /** The max number of threads handling clients for this service. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< int > property_max_threads() const; public: public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: /// This is a default handler for the signal signal_run(). virtual bool on_run(const Glib::RefPtr& connection, const Glib::RefPtr& source_object); }; } // namespace Gio namespace Glib { /** A Glib::wrap() method for this object. * * @param object The C instance. * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. * * @relates Gio::ThreadedSocketService */ Glib::RefPtr wrap(GThreadedSocketService* object, bool take_copy = false); } #endif /* _GIOMM_THREADEDSOCKETSERVICE_H */