1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Take a look at the license at the top of the repository in the LICENSE file.

use glib::translate::FromGlibPtrFull;
use glib::Cast;

use crate::SocketService;
use crate::ThreadedSocketService;

impl ThreadedSocketService {
    /// Creates a new [`ThreadedSocketService`][crate::ThreadedSocketService] with no listeners. Listeners
    /// must be added with one of the [`SocketListener`][crate::SocketListener] "add" methods.
    /// ## `max_threads`
    /// the maximal number of threads to execute concurrently
    ///  handling incoming clients, -1 means no limit
    ///
    /// # Returns
    ///
    /// a new [`SocketService`][crate::SocketService].
    #[doc(alias = "g_threaded_socket_service_new")]
    pub fn new(max_threads: Option<u32>) -> ThreadedSocketService {
        let max_threads = max_threads.map(|x| x as i32).unwrap_or(-1);
        unsafe {
            SocketService::from_glib_full(ffi::g_threaded_socket_service_new(max_threads))
                .unsafe_cast()
        }
    }
}