2018-04-23 17:34:22 +00:00
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
2018-02-09 02:30:08 +00:00
// DO NOT EDIT
use Error ;
use RTSPAuth ;
use RTSPClient ;
use RTSPMountPoints ;
use RTSPSessionPool ;
use RTSPThreadPool ;
use ffi ;
use gio ;
use glib ;
2018-12-09 16:06:12 +00:00
use glib ::GString ;
2019-01-16 11:32:39 +00:00
use glib ::object ::Cast ;
2018-02-09 02:30:08 +00:00
use glib ::object ::IsA ;
use glib ::signal ::SignalHandlerId ;
2018-12-08 09:05:20 +00:00
use glib ::signal ::connect_raw ;
2018-02-09 02:30:08 +00:00
use glib ::translate ::* ;
use glib_ffi ;
use std ::boxed ::Box as Box_ ;
use std ::mem ::transmute ;
use std ::ptr ;
glib_wrapper! {
2019-01-16 11:32:39 +00:00
pub struct RTSPServer ( Object < ffi ::GstRTSPServer , ffi ::GstRTSPServerClass , RTSPServerClass > ) ;
2018-02-09 02:30:08 +00:00
match fn {
get_type = > | | ffi ::gst_rtsp_server_get_type ( ) ,
}
}
impl RTSPServer {
pub fn new ( ) -> RTSPServer {
assert_initialized_main_thread! ( ) ;
unsafe {
from_glib_full ( ffi ::gst_rtsp_server_new ( ) )
}
}
2019-02-04 14:56:17 +00:00
pub fn io_func < P : IsA < gio ::Socket > , Q : IsA < RTSPServer > > ( socket : & P , condition : glib ::IOCondition , server : & Q ) -> Result < ( ) , glib ::error ::BoolError > {
2018-02-09 02:30:08 +00:00
skip_assert_initialized! ( ) ;
unsafe {
2019-02-04 14:56:17 +00:00
glib_result_from_gboolean! ( ffi ::gst_rtsp_server_io_func ( socket . as_ref ( ) . to_glib_none ( ) . 0 , condition . to_glib ( ) , server . as_ref ( ) . to_glib_none ( ) . 0 ) , " Failed to connect the source " )
2018-02-09 02:30:08 +00:00
}
}
}
impl Default for RTSPServer {
fn default ( ) -> Self {
Self ::new ( )
}
}
unsafe impl Send for RTSPServer { }
unsafe impl Sync for RTSPServer { }
2019-01-16 11:32:39 +00:00
pub const NONE_RTSP_SERVER : Option < & RTSPServer > = None ;
2018-12-08 09:05:20 +00:00
pub trait RTSPServerExt : 'static {
2019-01-29 13:53:44 +00:00
//fn client_filter(&self, func: /*Unimplemented*/Fn(&RTSPServer, &RTSPClient) -> /*Ignored*/RTSPFilterResult, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> Vec<RTSPClient>;
2018-02-09 02:30:08 +00:00
2019-01-16 11:32:39 +00:00
fn create_socket < ' a , P : IsA < gio ::Cancellable > + ' a , Q : Into < Option < & ' a P > > > ( & self , cancellable : Q ) -> Result < gio ::Socket , Error > ;
2018-02-09 02:30:08 +00:00
2019-01-16 11:32:39 +00:00
fn create_source < ' a , P : IsA < gio ::Cancellable > + ' a , Q : Into < Option < & ' a P > > > ( & self , cancellable : Q ) -> Result < glib ::Source , Error > ;
2018-02-09 02:30:08 +00:00
2018-12-09 16:06:12 +00:00
fn get_address ( & self ) -> Option < GString > ;
2018-02-09 02:30:08 +00:00
fn get_auth ( & self ) -> Option < RTSPAuth > ;
fn get_backlog ( & self ) -> i32 ;
fn get_bound_port ( & self ) -> i32 ;
fn get_mount_points ( & self ) -> Option < RTSPMountPoints > ;
2018-12-09 16:06:12 +00:00
fn get_service ( & self ) -> Option < GString > ;
2018-02-09 02:30:08 +00:00
fn get_session_pool ( & self ) -> Option < RTSPSessionPool > ;
fn get_thread_pool ( & self ) -> Option < RTSPThreadPool > ;
fn set_address ( & self , address : & str ) ;
2019-01-16 11:32:39 +00:00
fn set_auth < ' a , P : IsA < RTSPAuth > + ' a , Q : Into < Option < & ' a P > > > ( & self , auth : Q ) ;
2018-02-09 02:30:08 +00:00
fn set_backlog ( & self , backlog : i32 ) ;
2019-01-16 11:32:39 +00:00
fn set_mount_points < ' a , P : IsA < RTSPMountPoints > + ' a , Q : Into < Option < & ' a P > > > ( & self , mounts : Q ) ;
2018-02-09 02:30:08 +00:00
fn set_service ( & self , service : & str ) ;
2019-01-16 11:32:39 +00:00
fn set_session_pool < ' a , P : IsA < RTSPSessionPool > + ' a , Q : Into < Option < & ' a P > > > ( & self , pool : Q ) ;
2018-02-09 02:30:08 +00:00
2019-01-16 11:32:39 +00:00
fn set_thread_pool < ' a , P : IsA < RTSPThreadPool > + ' a , Q : Into < Option < & ' a P > > > ( & self , pool : Q ) ;
2018-02-09 02:30:08 +00:00
2019-02-04 14:56:17 +00:00
fn transfer_connection < ' a , P : IsA < gio ::Socket > , Q : Into < Option < & ' a str > > > ( & self , socket : & P , ip : & str , port : i32 , initial_buffer : Q ) -> Result < ( ) , glib ::error ::BoolError > ;
2018-02-09 02:30:08 +00:00
fn connect_client_connected < F : Fn ( & Self , & RTSPClient ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_address_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_backlog_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_bound_port_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_mount_points_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_service_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_session_pool_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId ;
}
2018-12-08 09:05:20 +00:00
impl < O : IsA < RTSPServer > > RTSPServerExt for O {
2019-01-29 13:53:44 +00:00
//fn client_filter(&self, func: /*Unimplemented*/Fn(&RTSPServer, &RTSPClient) -> /*Ignored*/RTSPFilterResult, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> Vec<RTSPClient> {
2018-02-09 02:30:08 +00:00
// unsafe { TODO: call ffi::gst_rtsp_server_client_filter() }
//}
2019-01-16 11:32:39 +00:00
fn create_socket < ' a , P : IsA < gio ::Cancellable > + ' a , Q : Into < Option < & ' a P > > > ( & self , cancellable : Q ) -> Result < gio ::Socket , Error > {
2018-02-09 02:30:08 +00:00
let cancellable = cancellable . into ( ) ;
unsafe {
let mut error = ptr ::null_mut ( ) ;
2019-01-16 11:32:39 +00:00
let ret = ffi ::gst_rtsp_server_create_socket ( self . as_ref ( ) . to_glib_none ( ) . 0 , cancellable . map ( | p | p . as_ref ( ) ) . to_glib_none ( ) . 0 , & mut error ) ;
2018-02-09 02:30:08 +00:00
if error . is_null ( ) { Ok ( from_glib_full ( ret ) ) } else { Err ( from_glib_full ( error ) ) }
}
}
2019-01-16 11:32:39 +00:00
fn create_source < ' a , P : IsA < gio ::Cancellable > + ' a , Q : Into < Option < & ' a P > > > ( & self , cancellable : Q ) -> Result < glib ::Source , Error > {
2018-02-09 02:30:08 +00:00
let cancellable = cancellable . into ( ) ;
unsafe {
let mut error = ptr ::null_mut ( ) ;
2019-01-16 11:32:39 +00:00
let ret = ffi ::gst_rtsp_server_create_source ( self . as_ref ( ) . to_glib_none ( ) . 0 , cancellable . map ( | p | p . as_ref ( ) ) . to_glib_none ( ) . 0 , & mut error ) ;
2018-02-09 02:30:08 +00:00
if error . is_null ( ) { Ok ( from_glib_full ( ret ) ) } else { Err ( from_glib_full ( error ) ) }
}
}
2018-12-09 16:06:12 +00:00
fn get_address ( & self ) -> Option < GString > {
2018-02-09 02:30:08 +00:00
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::gst_rtsp_server_get_address ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-02-09 02:30:08 +00:00
}
}
fn get_auth ( & self ) -> Option < RTSPAuth > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::gst_rtsp_server_get_auth ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-02-09 02:30:08 +00:00
}
}
fn get_backlog ( & self ) -> i32 {
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_get_backlog ( self . as_ref ( ) . to_glib_none ( ) . 0 )
2018-02-09 02:30:08 +00:00
}
}
fn get_bound_port ( & self ) -> i32 {
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_get_bound_port ( self . as_ref ( ) . to_glib_none ( ) . 0 )
2018-02-09 02:30:08 +00:00
}
}
fn get_mount_points ( & self ) -> Option < RTSPMountPoints > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::gst_rtsp_server_get_mount_points ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-02-09 02:30:08 +00:00
}
}
2018-12-09 16:06:12 +00:00
fn get_service ( & self ) -> Option < GString > {
2018-02-09 02:30:08 +00:00
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::gst_rtsp_server_get_service ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-02-09 02:30:08 +00:00
}
}
fn get_session_pool ( & self ) -> Option < RTSPSessionPool > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::gst_rtsp_server_get_session_pool ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-02-09 02:30:08 +00:00
}
}
fn get_thread_pool ( & self ) -> Option < RTSPThreadPool > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::gst_rtsp_server_get_thread_pool ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-02-09 02:30:08 +00:00
}
}
fn set_address ( & self , address : & str ) {
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_set_address ( self . as_ref ( ) . to_glib_none ( ) . 0 , address . to_glib_none ( ) . 0 ) ;
2018-02-09 02:30:08 +00:00
}
}
2019-01-16 11:32:39 +00:00
fn set_auth < ' a , P : IsA < RTSPAuth > + ' a , Q : Into < Option < & ' a P > > > ( & self , auth : Q ) {
2018-02-09 02:30:08 +00:00
let auth = auth . into ( ) ;
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_set_auth ( self . as_ref ( ) . to_glib_none ( ) . 0 , auth . map ( | p | p . as_ref ( ) ) . to_glib_none ( ) . 0 ) ;
2018-02-09 02:30:08 +00:00
}
}
fn set_backlog ( & self , backlog : i32 ) {
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_set_backlog ( self . as_ref ( ) . to_glib_none ( ) . 0 , backlog ) ;
2018-02-09 02:30:08 +00:00
}
}
2019-01-16 11:32:39 +00:00
fn set_mount_points < ' a , P : IsA < RTSPMountPoints > + ' a , Q : Into < Option < & ' a P > > > ( & self , mounts : Q ) {
2018-02-09 02:30:08 +00:00
let mounts = mounts . into ( ) ;
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_set_mount_points ( self . as_ref ( ) . to_glib_none ( ) . 0 , mounts . map ( | p | p . as_ref ( ) ) . to_glib_none ( ) . 0 ) ;
2018-02-09 02:30:08 +00:00
}
}
fn set_service ( & self , service : & str ) {
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_set_service ( self . as_ref ( ) . to_glib_none ( ) . 0 , service . to_glib_none ( ) . 0 ) ;
2018-02-09 02:30:08 +00:00
}
}
2019-01-16 11:32:39 +00:00
fn set_session_pool < ' a , P : IsA < RTSPSessionPool > + ' a , Q : Into < Option < & ' a P > > > ( & self , pool : Q ) {
2018-02-09 02:30:08 +00:00
let pool = pool . into ( ) ;
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_set_session_pool ( self . as_ref ( ) . to_glib_none ( ) . 0 , pool . map ( | p | p . as_ref ( ) ) . to_glib_none ( ) . 0 ) ;
2018-02-09 02:30:08 +00:00
}
}
2019-01-16 11:32:39 +00:00
fn set_thread_pool < ' a , P : IsA < RTSPThreadPool > + ' a , Q : Into < Option < & ' a P > > > ( & self , pool : Q ) {
2018-02-09 02:30:08 +00:00
let pool = pool . into ( ) ;
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::gst_rtsp_server_set_thread_pool ( self . as_ref ( ) . to_glib_none ( ) . 0 , pool . map ( | p | p . as_ref ( ) ) . to_glib_none ( ) . 0 ) ;
2018-02-09 02:30:08 +00:00
}
}
2019-02-04 14:56:17 +00:00
fn transfer_connection < ' a , P : IsA < gio ::Socket > , Q : Into < Option < & ' a str > > > ( & self , socket : & P , ip : & str , port : i32 , initial_buffer : Q ) -> Result < ( ) , glib ::error ::BoolError > {
2018-02-09 02:30:08 +00:00
let initial_buffer = initial_buffer . into ( ) ;
unsafe {
2019-02-04 14:56:17 +00:00
glib_result_from_gboolean! ( ffi ::gst_rtsp_server_transfer_connection ( self . as_ref ( ) . to_glib_none ( ) . 0 , socket . as_ref ( ) . to_glib_full ( ) , ip . to_glib_none ( ) . 0 , port , initial_buffer . to_glib_none ( ) . 0 ) , " Failed to transfer to the connection " )
2018-02-09 02:30:08 +00:00
}
}
fn connect_client_connected < F : Fn ( & Self , & RTSPClient ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " client-connected \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( client_connected_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-02-09 02:30:08 +00:00
}
}
fn connect_property_address_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::address \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_address_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-02-09 02:30:08 +00:00
}
}
fn connect_property_backlog_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::backlog \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_backlog_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-02-09 02:30:08 +00:00
}
}
fn connect_property_bound_port_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::bound-port \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_bound_port_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-02-09 02:30:08 +00:00
}
}
fn connect_property_mount_points_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::mount-points \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_mount_points_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-02-09 02:30:08 +00:00
}
}
fn connect_property_service_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::service \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_service_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-02-09 02:30:08 +00:00
}
}
fn connect_property_session_pool_notify < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::session-pool \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_session_pool_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-02-09 02:30:08 +00:00
}
}
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn client_connected_trampoline < P , F : Fn ( & P , & RTSPClient ) + Send + Sync + 'static > ( this : * mut ffi ::GstRTSPServer , object : * mut ffi ::GstRTSPClient , f : glib_ffi ::gpointer )
2018-02-09 02:30:08 +00:00
where P : IsA < RTSPServer > {
2019-01-29 13:53:44 +00:00
let f : & F = transmute ( f ) ;
2019-01-16 11:32:39 +00:00
f ( & RTSPServer ::from_glib_borrow ( this ) . unsafe_cast ( ) , & from_glib_borrow ( object ) )
2018-02-09 02:30:08 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_address_trampoline < P , F : Fn ( & P ) + Send + Sync + 'static > ( this : * mut ffi ::GstRTSPServer , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-02-09 02:30:08 +00:00
where P : IsA < RTSPServer > {
2019-01-29 13:53:44 +00:00
let f : & F = transmute ( f ) ;
2019-01-16 11:32:39 +00:00
f ( & RTSPServer ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-02-09 02:30:08 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_backlog_trampoline < P , F : Fn ( & P ) + Send + Sync + 'static > ( this : * mut ffi ::GstRTSPServer , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-02-09 02:30:08 +00:00
where P : IsA < RTSPServer > {
2019-01-29 13:53:44 +00:00
let f : & F = transmute ( f ) ;
2019-01-16 11:32:39 +00:00
f ( & RTSPServer ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-02-09 02:30:08 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_bound_port_trampoline < P , F : Fn ( & P ) + Send + Sync + 'static > ( this : * mut ffi ::GstRTSPServer , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-02-09 02:30:08 +00:00
where P : IsA < RTSPServer > {
2019-01-29 13:53:44 +00:00
let f : & F = transmute ( f ) ;
2019-01-16 11:32:39 +00:00
f ( & RTSPServer ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-02-09 02:30:08 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_mount_points_trampoline < P , F : Fn ( & P ) + Send + Sync + 'static > ( this : * mut ffi ::GstRTSPServer , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-02-09 02:30:08 +00:00
where P : IsA < RTSPServer > {
2019-01-29 13:53:44 +00:00
let f : & F = transmute ( f ) ;
2019-01-16 11:32:39 +00:00
f ( & RTSPServer ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-02-09 02:30:08 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_service_trampoline < P , F : Fn ( & P ) + Send + Sync + 'static > ( this : * mut ffi ::GstRTSPServer , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-02-09 02:30:08 +00:00
where P : IsA < RTSPServer > {
2019-01-29 13:53:44 +00:00
let f : & F = transmute ( f ) ;
2019-01-16 11:32:39 +00:00
f ( & RTSPServer ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-02-09 02:30:08 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_session_pool_trampoline < P , F : Fn ( & P ) + Send + Sync + 'static > ( this : * mut ffi ::GstRTSPServer , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-02-09 02:30:08 +00:00
where P : IsA < RTSPServer > {
2019-01-29 13:53:44 +00:00
let f : & F = transmute ( f ) ;
2019-01-16 11:32:39 +00:00
f ( & RTSPServer ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-02-09 02:30:08 +00:00
}