[options]
girs_dir = "gir-files"
library = "GstRtspServer"
version = "1.0"
min_cfg_version = "1.8"
target_path = "gstreamer-rtsp-server"
work_mode = "normal"
concurrency = "send+sync"
generate_safety_asserts = true
single_version_file = true
doc_target_path = "docs/gstreamer-rtsp-server/docs.md"
generate_display_trait = false

external_libraries = [
    "GLib",
    "GObject",
    "Gio",
    "Gst",
    "GstNet",
    "GstRtsp",
    "GstSDP"
]

generate = [
    "GstRtspServer.RTSPAddressPoolResult",
    "GstRtspServer.RTSPMediaFactoryURI",
    "GstRtspServer.RTSPMediaStatus",
    "GstRtspServer.RTSPPublishClockMode",
    "GstRtspServer.RTSPSuspendMode",
    "GstRtspServer.RTSPThreadPool",
    "GstRtspServer.RTSPThreadType",
    "GstRtspServer.RTSPTransportMode",
    "GstRtspServer.RTSPFilterResult"
]

manual = [
    "GLib.MainContext",
    "GLib.IOCondition",
    "GLib.Source",
    "GLib.MainLoop",
    "GLib.ThreadPool",
    "GLib.Error",
    "GObject.Object",
    "Gio.TlsCertificateFlags",
    "Gio.TlsCertificate",
    "Gio.TlsDatabase",
    "Gio.TlsConnection",
    "Gio.TlsAuthenticationMode",
    "Gio.Socket",
    "Gio.Cancellable",
    "Gio.SocketFamily",
    "Gst.Element",
    "Gst.State",
    "Gst.Clock",
    "Gst.Pipeline",
    "Gst.Pad",
    "Gst.Bin",
    "Gst.FlowReturn",
    "GstRtsp.RTSPAuthMethod",
    "GstRtsp.RTSPUrl",
    "GstRtsp.RTSPResult",
    "GstRtsp.RTSPStatusCode",
    "GstRtsp.RTSPRangeUnit",
    "GstRtsp.RTSPProfile",
    "GstRtsp.RTSPLowerTrans"
]

[[object]]
name = "Gst.Message"
status = "manual"
ref_mode = "ref"

[[object]]
name = "Gst.Structure"
status = "manual"
ref_mode = "ref-mut"

[[object]]
name = "Gst.Buffer"
status = "manual"
ref_mode = "ref"

[[object]]
name = "Gst.Caps"
status = "manual"
ref_mode = "ref"

[[object]]
name = "GstRtspServer.RTSPContext"
status = "manual"
ref_mode = "ref"

[[object]]
name = "GstRtspServer.RTSPToken"
status = "manual"
ref_mode = "ref"

[[object]]
name = "GstRtspServer.RTSPThread"
status = "manual"
ref_mode = "ref"

[[object]]
name = "Gst.ClockTime"
status = "manual"
conversion_type = "scalar"

[[object]]
name = "GstRtspServer.RTSPServer"
status = "generate"
manual_traits = ["RTSPServerExtManual"]

    [[object.function]]
    name = "attach"
    ignore = true

    [[object.function]]
    name = "io_func"
        [object.function.return]
        bool_return_is_error = "Failed to connect the source"

    [[object.function]]
    name = "transfer_connection"
        [object.function.return]
        bool_return_is_error = "Failed to transfer to the connection"

[[object]]
name = "GstRtspServer.RTSPClient"
status = "generate"
manual_traits = ["RTSPClientExtManual"]

    [[object.function]]
    name = "attach"
    ignore = true

[[object]]
name = "GstRtspServer.RTSPStream"
status = "generate"
manual_traits = ["RTSPStreamExtManual"]

    [[object.function]]
    name = "recv_rtcp"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "recv_rtp"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "query_position"
    ignore = true
    
    [[object.function]]
    name = "query_stop"
    ignore = true

    [[object.function]]
    name = "add_transport"
        [object.function.return]
        bool_return_is_error = "Failed to add transport"

    [[object.function]]
    name = "remove_transport"
        [object.function.return]
        bool_return_is_error = "Failed to remove transport"

    [[object.function]]
    name = "join_bin"
        [object.function.return]
        bool_return_is_error = "Failed to join bin"

    [[object.function]]
    name = "leave_bin"
        [object.function.return]
        bool_return_is_error = "Failed to leave bin"

    [[object.function]]
    name = "set_blocked"
        [object.function.return]
        bool_return_is_error = "Failed to block/unblock the dataflow"

    [[object.function]]
    name = "unblock_linked"
        [object.function.return]
        bool_return_is_error = "Failed to unblock the dataflow"

    [[object.function]]
    name = "update_crypto"
        [object.function.return]
        bool_return_is_error = "Failed to update crypto"

[[object]]
name = "GstRtspServer.RTSPAddress"
status = "generate"
concurrency = "send"

[[object]]
name = "GstRtspServer.RTSPStreamTransport"
status = "generate"
concurrency = "none"
manual_traits = ["RTSPStreamTransportExtManual"]

    [[object.function]]
    name = "recv_data"
    # Use Result<FlowSuccess, FlowError>
    ignore = true

    [[object.function]]
    name = "send_rtcp"
        [object.function.return]
        bool_return_is_error = "Failed to send rtcp"

    [[object.function]]
    name = "send_rtp"
        [object.function.return]
        bool_return_is_error = "Failed to send rtp"

    [[object.function]]
    name = "set_active"
        [object.function.return]
        bool_return_is_error = "Failed to set active"

[[object]]
name = "GstRtspServer.RTSPAddressPool"
status = "generate"
manual_traits = ["RTSPAddressPoolExtManual"]

    [[object.function]]
    name = "add_range"
        [object.function.return]
        bool_return_is_error = "Failed to add address range"

    [[object.function]]
    name = "acquire_address"
        [object.function.return]
        nullable_return_is_error = "Failed to acquire address"

    [[object.function]]
    name = "reserve_address"
    ignore = true

[[object]]
name = "GstRtspServer.RTSPMedia"
status = "generate"
manual_traits = ["RTSPMediaExtManual"]

    [[object.function]]
    name = "suspend"
        [object.function.return]
        bool_return_is_error = "Failed to suspend media"

    [[object.function]]
    name = "unprepare"
        [object.function.return]
        bool_return_is_error = "Failed to unprepare media"

    [[object.function]]
    name = "prepare"
        [object.function.return]
        bool_return_is_error = "Failed to prepare media"

    [[object.function]]
    name = "unsuspend"
        [object.function.return]
        bool_return_is_error = "Failed to unsuspend media"

    [[object.function]]
    name = "take_pipeline"
    ignore = true

[[object]]
name = "GstRtspServer.RTSPMediaFactory"
status = "generate"
manual_traits = ["RTSPMediaFactoryExtManual"]

    [[object.function]]
    name = "add_role_from_structure"
    # Different structure mutability needed
    ignore = true

    [[object.function]]
    name = "construct"
        [object.function.return]
        nullable_return_is_error = "Failed to construct media"

    [[object.function]]
    name = "create_element"
        [object.function.return]
        nullable_return_is_error = "Failed to create media element"

[[object]]
name = "GstRtspServer.RTSPSessionMedia"
status = "generate"

    [[object.function]]
    name = "set_state"
        [object.function.return]
        bool_return_is_error = "Failed to set state of session media"

[[object]]
name = "GstRtspServer.RTSPSessionPool"
status = "generate"
manual_traits = ["RTSPSessionPoolExtManual"]

    [[object.function]]
    name = "remove"
        [object.function.return]
        bool_return_is_error = "Failed to remove session from pool"

    [[object.function]]
    name = "create_watch"
    # GSource return
    ignore = true

    [[object.function]]
    name = "create"
        [object.function.return]
        nullable_return_is_error = "Failed to create session pool"

[[object]]
name="GstRtspServer.RTSPAuth"
status="generate"
manual_traits = ["RTSPAuthExtManual"]

    [[object.function]]
    name = "check"
        [object.function.return]
        bool_return_is_error = "Check failed"

    [[object.function]]
    name = "connect_accept_certificate"
    # Use Result<(), LoggableError>
    ignore = true

    [[object.function]]
    name = "make_basic"
        [object.function.return]
        nullable = false

    [[object.function]]
    name = "set_default_token"
    # gir forgets mut
    ignore = true

[[object]]
name="GstRtspServer.RTSPMountPoints"
status="generate"
    [[object.function]]
    name = "make_path"
        [object.function.return]
        nullable_return_is_error = "Failed to make path"

[[object]]
name="GstRtspServer.RTSPSession"
status="generate"
    [[object.function]]
    name = "manage_media"
        [object.function.return]
        nullable_return_is_error = "Failed to manage media"

[[object]]
name = "GstRtspServer.RTSPAddressFlags"
status = "generate"
    [[object.member]]
    name = "none"
    ignore = true
