pub struct IOBluetoothOBEXSession { /* private fields */ }IOBluetoothOBEXSession and OBEXSession only.Expand description
Implementations§
Source§impl IOBluetoothOBEXSession
impl IOBluetoothOBEXSession
Sourcepub unsafe fn withSDPServiceRecord(
in_sdp_service_record: Option<&IOBluetoothSDPServiceRecord>,
) -> Option<Retained<Self>>
Available on crate features objc2 and IOBluetoothSDPServiceRecord only.
pub unsafe fn withSDPServiceRecord( in_sdp_service_record: Option<&IOBluetoothSDPServiceRecord>, ) -> Option<Retained<Self>>
objc2 and IOBluetoothSDPServiceRecord only.Creates a Bluetooth-based OBEX Session using an SDP service record, typically obtained from a device/service browser window controller.
Parameter inSDPServiceRecord: A valid SDP service record describing the service (and RFCOMM channel) you want to
connect to with Bluetooth/OBEX.
Returns: An OBEX session representing the device/rfcomm channel found in the service record. nil if we failed.
Note that this does NOT mean the transport connection was open. It will be opened when OBEXConnect is invoked on the session object.
IMPORTANT NOTE* In Bluetooth framework version 1.0.0, the session returned will NOT be autoreleased as it should be according to objc convention. This has been changed starting in Bluetooth version 1.0.1 and later, so it WILL be autoreleased upon return, so you will need to retain it if you want to reference it later.
§Safety
in_sdp_service_record might not allow None.
Sourcepub unsafe fn withDevice_channelID(
in_device: Option<&IOBluetoothDevice>,
in_rfcomm_channel_id: BluetoothRFCOMMChannelID,
) -> Option<Retained<Self>>
Available on crate features objc2 and Bluetooth and IOBluetoothDevice and IOBluetoothObject only.
pub unsafe fn withDevice_channelID( in_device: Option<&IOBluetoothDevice>, in_rfcomm_channel_id: BluetoothRFCOMMChannelID, ) -> Option<Retained<Self>>
objc2 and Bluetooth and IOBluetoothDevice and IOBluetoothObject only.Creates a Bluetooth-based OBEX Session using a Bluetooth device and a Bluetooth RFCOMM channel ID.
Parameter inDevice: A valid Bluetooth device describing which device you want to connect to
with Bluetooth/OBEX.
Parameter inRFCOMMChannelID: An RFCOMM Channel ID numbe that is available on the remote device. This channel will
be used when the transport connection is attempted.
Returns: An OBEX session representing the device/rfcomm channel found in the service record. nil if we failed.
Note that this does NOT mean the transport connection was open. It will be opened when OBEXConnect is invoked on the session object.
IMPORTANT NOTE* In Bluetooth framework version 1.0.0, the session returned will NOT be autoreleased as it should be according to objc convention. This has been changed starting in Bluetooth version 1.0.1 and later, so it WILL be autoreleased upon return, so you will need to retain it if you want to reference it later.
§Safety
in_device might not allow None.
Sourcepub unsafe fn withIncomingRFCOMMChannel_eventSelector_selectorTarget_refCon(
in_channel: Option<&IOBluetoothRFCOMMChannel>,
in_event_selector: Option<Sel>,
in_event_selector_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> Option<Retained<Self>>
Available on crate features objc2 and IOBluetoothObject and IOBluetoothRFCOMMChannel only.
pub unsafe fn withIncomingRFCOMMChannel_eventSelector_selectorTarget_refCon( in_channel: Option<&IOBluetoothRFCOMMChannel>, in_event_selector: Option<Sel>, in_event_selector_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> Option<Retained<Self>>
objc2 and IOBluetoothObject and IOBluetoothRFCOMMChannel only.Creates a Bluetooth-based OBEX Session using an incoming RFCOMM channel.
Parameter inChannel: The channel to use to create a connection to a device.
Parameter inEventSelector: The selector that gets called when an event occurs on the OBEX Session.
Parameter inEventSelectorTarget: The object that is used to call the above selector.
Parameter inUserRefCon: The reference constant. Pass whatever you wish - it will be returned to you in the selector.
Returns:
IMPORTANT NOTE* In Bluetooth framework version 1.0.0, the session returned will NOT be autoreleased as it should be according to objc convention. This has been changed starting in Bluetooth version 1.0.1 and later, so it WILL be autoreleased upon return, so you will need to retain it if you want to reference it later.
§Safety
in_channelmight not allowNone.in_event_selectormust be a valid selector.in_event_selector_targetshould be of the correct type.in_event_selector_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn initWithSDPServiceRecord(
this: Allocated<Self>,
in_sdp_service_record: Option<&IOBluetoothSDPServiceRecord>,
) -> Option<Retained<Self>>
Available on crate features objc2 and IOBluetoothSDPServiceRecord only.
pub unsafe fn initWithSDPServiceRecord( this: Allocated<Self>, in_sdp_service_record: Option<&IOBluetoothSDPServiceRecord>, ) -> Option<Retained<Self>>
objc2 and IOBluetoothSDPServiceRecord only.Initializes a Bluetooth-based OBEX Session using an SDP service record.
Parameter inSDPServiceRecord:
Returns:
§Safety
in_sdp_service_record might not allow None.
Sourcepub unsafe fn initWithDevice_channelID(
this: Allocated<Self>,
in_device: Option<&IOBluetoothDevice>,
in_channel_id: BluetoothRFCOMMChannelID,
) -> Option<Retained<Self>>
Available on crate features objc2 and Bluetooth and IOBluetoothDevice and IOBluetoothObject only.
pub unsafe fn initWithDevice_channelID( this: Allocated<Self>, in_device: Option<&IOBluetoothDevice>, in_channel_id: BluetoothRFCOMMChannelID, ) -> Option<Retained<Self>>
objc2 and Bluetooth and IOBluetoothDevice and IOBluetoothObject only.Initializes a Bluetooth-based OBEX Session using a Bluetooth device.
Parameter inDevice: The bluetooth device on which to open the OBEXSession.
Parameter inChannelID: The RFCOMM channel ID to use when opening the connection.
Returns:
§Safety
in_device might not allow None.
Sourcepub unsafe fn initWithIncomingRFCOMMChannel_eventSelector_selectorTarget_refCon(
this: Allocated<Self>,
in_channel: Option<&IOBluetoothRFCOMMChannel>,
in_event_selector: Option<Sel>,
in_event_selector_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> Option<Retained<Self>>
Available on crate features objc2 and IOBluetoothObject and IOBluetoothRFCOMMChannel only.
pub unsafe fn initWithIncomingRFCOMMChannel_eventSelector_selectorTarget_refCon( this: Allocated<Self>, in_channel: Option<&IOBluetoothRFCOMMChannel>, in_event_selector: Option<Sel>, in_event_selector_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> Option<Retained<Self>>
objc2 and IOBluetoothObject and IOBluetoothRFCOMMChannel only.Initializes a Bluetooth-based OBEX Session using an incoming RFCOMM channel.
Parameter inChannelID: RFCOMM channel ID of the desired channel to be used.
Parameter inEventSelector: The selector to be called when an event is received.
Parameter inEventSelectorTarget: The target object that get the selector message.
Parameter refCon: caller reference constant, pass whatever you want, it will be returned to you in the selector.
Returns:
§Safety
in_channelmight not allowNone.in_event_selectormust be a valid selector.in_event_selector_targetshould be of the correct type.in_event_selector_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn getRFCOMMChannel(
&self,
) -> Option<Retained<IOBluetoothRFCOMMChannel>>
Available on crate features objc2 and IOBluetoothObject and IOBluetoothRFCOMMChannel only.
pub unsafe fn getRFCOMMChannel( &self, ) -> Option<Retained<IOBluetoothRFCOMMChannel>>
objc2 and IOBluetoothObject and IOBluetoothRFCOMMChannel only.Get the Bluetooth RFCOMM channel being used by the session object.
Returns: A IOBluetoothRFCOMMChannel object.
This could potentially be nil even though you have a valid OBEX session, because the RFCOMM channel is only valid when the session is connected.
Sourcepub unsafe fn getDevice(&self) -> Option<Retained<IOBluetoothDevice>>
Available on crate features objc2 and IOBluetoothDevice and IOBluetoothObject only.
pub unsafe fn getDevice(&self) -> Option<Retained<IOBluetoothDevice>>
objc2 and IOBluetoothDevice and IOBluetoothObject only.Get the Bluetooth Device being used by the session object.
Returns: An IOBluetoothDevice object.
Sourcepub unsafe fn sendBufferTroughChannel(&self) -> c_int
Available on crate feature objc2 only.
pub unsafe fn sendBufferTroughChannel(&self) -> c_int
objc2 only.Sends the next block of data trough the rfcomm channel.
Returns: Since a send in the rfcomm channel is broken in multiple write calls (this actually is true only if the size is grater than the rfcomm MTU). Each write call is performed by sendBufferTroughChannel. This should never need to be overwritten.
Sourcepub unsafe fn restartTransmission(&self)
Available on crate feature objc2 only.
pub unsafe fn restartTransmission(&self)
objc2 only.If the transmission was stopeed due to the lack of buffers this call restarts it.
Returns: If the transmission was stopeed due to the lack of buffers this call restarts it.
Sourcepub unsafe fn isSessionTargetAMac(&self) -> bool
Available on crate feature objc2 only.
pub unsafe fn isSessionTargetAMac(&self) -> bool
objc2 only.Tells whether the target device is a Mac by checking its service record.
Returns: TRUE only if device service record has Mac entry, FALSE for all else.
Tells whether the target device is a Mac by checking its service record.
Sourcepub unsafe fn openTransportConnection_selectorTarget_refCon(
&self,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn openTransportConnection_selectorTarget_refCon( &self, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.An OBEXSession override. When this is called by the session baseclass, we will attempt to open the transport connection. In our case, this would be an RFCOMM channel to another Bluetooth device.
Returns: Success or failure code.
Your selector should have the following signature:
-(void)transportConnectionSelector:(id)refcon status:(OBEXError)status;
Thus you could use it with openTransportConnection like this:
OBEXError error = [anOBEXSession openTransportConnection: sel!( transportConnectionSelector:status: ) selectorTarget:self refCon:anOBEXSession]; // or whatever you want to pass as a refCon…
Be sure to check the status code! Assume the connection was not opened unless status is kOBEXSuccess.
§Safety
in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn hasOpenTransportConnection(&self) -> u8
Available on crate feature objc2 only.
pub unsafe fn hasOpenTransportConnection(&self) -> u8
objc2 only.An OBEXSession override. When this is called by the session baseclass, we will return whether or not we have a transport connection established to another OBEX server/client. In our case we will tell whether or not the RFCOMM channel to a remote device is still open.
Returns: True or false, whether there is already an open transport connection for this OBEX session.
Sourcepub unsafe fn closeTransportConnection(&self) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn closeTransportConnection(&self) -> OBEXError
objc2 and OBEX only.An OBEXSession override. When this is called by the session baseclass, we will close the transport connection if it is opened. In our case, it will be the RFCOMM channel that needs closing.
Returns: Success or failure code, describing whether the call succeeded in closing the transport connection successfully.
Sourcepub unsafe fn sendDataToTransport_dataLength(
&self,
in_data_to_send: *mut c_void,
in_data_length: usize,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn sendDataToTransport_dataLength( &self, in_data_to_send: *mut c_void, in_data_length: usize, ) -> OBEXError
objc2 and OBEX only.An OBEXSession override. When this is called by the session baseclass, we will send the data we are given over our transport connection. If none is open, we could try to open it, or just return an error. In our case, it will be sent over the RFCOMM channel.
Returns: Success or failure code, describing whether the call succeeded in writing the data to the transport.
§Safety
in_data_to_send must be a valid pointer.
Sourcepub unsafe fn setOpenTransportConnectionAsyncSelector_target_refCon(
&self,
in_selector: Option<Sel>,
in_selector_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
)
Available on crate feature objc2 only.
pub unsafe fn setOpenTransportConnectionAsyncSelector_target_refCon( &self, in_selector: Option<Sel>, in_selector_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, )
objc2 only.Allows you to set the selector to be used when a transport connection is opened, or fails to open.
Parameter inEventSelector: Selector to call on the target.
Parameter inEventSelectorTarget: Target to be called with the selector.
Parameter inUserRefCon: User’s refCon that will get passed to them when their selector is invoked.
You do not need to call this on the session typically, unless you have subclassed the OBEXSession to implement a new transport and that transport supports async opening of connections. If it does not support async open, then using this is pointless.
§Safety
in_selectormust be a valid selector.in_selector_targetshould be of the correct type.in_selector_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn setOBEXSessionOpenConnectionCallback_refCon(
&self,
in_callback: IOBluetoothOBEXSessionOpenConnectionCallback,
in_user_ref_con: *mut c_void,
)
Available on crate features objc2 and OBEX and OBEXBluetooth only.
pub unsafe fn setOBEXSessionOpenConnectionCallback_refCon( &self, in_callback: IOBluetoothOBEXSessionOpenConnectionCallback, in_user_ref_con: *mut c_void, )
objc2 and OBEX and OBEXBluetooth only.For C API support. Allows you to set the callback to be invoked when the OBEX connection is actually opened.
Parameter inCallback: function to call on the target.
Parameter inUserRefCon: user’s reference constant, will be returned on the callback.
§Safety
in_callbackmust be implemented correctly.in_user_ref_conmust be a valid pointer.
Methods from Deref<Target = OBEXSession>§
Sourcepub unsafe fn OBEXConnect_maxPacketLength_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_flags: OBEXFlags,
in_max_packet_length: OBEXMaxPacketLength,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXConnect_maxPacketLength_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_flags: OBEXFlags, in_max_packet_length: OBEXMaxPacketLength, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Initiate an OBEX connection to a device. Causes underlying transport (Bluetooth, et al) to attempt to connect to a remote device. After success, an OBEX connect packet is sent to establish the OBEX Connection.
Parameter inFlags: OBEX connect flags. See OBEX.h for possibilities.
Parameter inMaxPacketLength: Maximum packet size you want to support. May be negotiated down, depending on
target device.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use the
provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXConnectHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the transport. You will receive a response to your command on your selector. If you have already established an OBEX connection and you call this again you will get an ‘kOBEXSessionAlreadyConnectedError’ as a result.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXDisconnect_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXDisconnect_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send an OBEX Disconnect command to the session’s target. THIS DOES NOT necessarily close the underlying transport connection. Deleting the session will ensure that closure.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXDisconnectHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the transport. You will receive a response to your command on your selector. Be careful not to exceed the max packet length in your optional headers, or your command will be rejected. It is recommended that you call getMaxPacketLength on your session before issuing this command so you know how much data the session’s target will accept in a single transaction.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXPut_headersData_headersDataLength_bodyData_bodyDataLength_eventSelector_selectorTarget_refCon(
&self,
is_final_chunk: u8,
in_headers_data: *mut c_void,
in_headers_data_length: usize,
in_body_data: *mut c_void,
in_body_data_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXPut_headersData_headersDataLength_bodyData_bodyDataLength_eventSelector_selectorTarget_refCon( &self, is_final_chunk: u8, in_headers_data: *mut c_void, in_headers_data_length: usize, in_body_data: *mut c_void, in_body_data_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send an OBEX Put command to the session’s target.
Parameter isFinalChunk: Specify if this request is complete in one shot - that all the headers you are
supplying will fit in the negotiated max packet length.
Parameter inHeadersData: Can be NULL. Ptr to some data you want to send as your headers, such as Length,
Name, etc. Use the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void)
for convenience.
Parameter inHeadersDataLength: Length of data in ptr passed in above.
Parameter inBodyData: Can be NULL. Ptr to some data you want to send as your BODY header. Do not construct a
real OBEX header here, it will be done for you - just pass a pointer to your
data, we’ll do the rest. HOWEVER, be aware that some overhead (3 bytes) will be added
to the data in constructing the BODY header for you.
Parameter inBodyDataLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXPutHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the transport. You will receive a response to your command on your selector.
§Safety
in_headers_datamust be a valid pointer.in_body_datamust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXGet_headers_headersLength_eventSelector_selectorTarget_refCon(
&self,
is_final_chunk: u8,
in_headers: *mut c_void,
in_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXGet_headers_headersLength_eventSelector_selectorTarget_refCon( &self, is_final_chunk: u8, in_headers: *mut c_void, in_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send an OBEX Get command to the session’s target.
Parameter isFinalChunk: Specify if this request is complete in one shot - that all the headers you are
supplying will fit in the negotiated max packet length.
Parameter inHeadersData: Can be NULL. Ptr to some data you want to send as your headers, such as Length,
Name, etc. Use the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void)
for your convenience.
Parameter inHeadersDataLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXGetHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the transport. You will receive a response to your command on your selector.
§Safety
in_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXAbort_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXAbort_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send an OBEX Abort command to the session’s target.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXAbortHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the transport. You will receive a response to your command on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXSetPath_constants_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_flags: OBEXFlags,
in_constants: OBEXConstants,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXSetPath_constants_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_flags: OBEXFlags, in_constants: OBEXConstants, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send an OBEX SetPath command to the session’s target.
Parameter inFlags: OBEX setpath flags. See OBEX.h for possibilities.
Parameter inConstants: OBEX setpath constants. See OBEX.h for possibilities.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXSetPathHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the transport. You will receive a response to your command on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXConnectResponse_flags_maxPacketLength_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_response_op_code: OBEXOpCode,
in_flags: OBEXFlags,
in_max_packet_length: OBEXMaxPacketLength,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXConnectResponse_flags_maxPacketLength_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_response_op_code: OBEXOpCode, in_flags: OBEXFlags, in_max_packet_length: OBEXMaxPacketLength, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send a connect response to a session’s target.
Parameter inFlags: OBEX connect flags. See OBEX.h for possibilities.
Parameter inConstants: OBEX connect constants. See OBEX.h for possibilities.
Parameter inMaxPacketLength: Maximum packet size you want your OBEX session to communicate with. This MUST be
lower than the max packet size the client has reported to you in the connect command
you received from it.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXConnectResponseHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the underlying OBEX transport. You will receive any responses to your command response on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXDisconnectResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_response_op_code: OBEXOpCode,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXDisconnectResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_response_op_code: OBEXOpCode, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send a disconnect response to a session’s target.
Parameter inMaxPacketLength: Maximum packet size you want your OBEX session to communicate with. This MUST be
lower than the max packet size the client has reported to you in the connect command
you received from it.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXDisconnectResponseHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the underlying OBEX transport. You will receive any responses to your command response on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXPutResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_response_op_code: OBEXOpCode,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXPutResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_response_op_code: OBEXOpCode, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send a put response to a session’s target.
Parameter inMaxPacketLength: Maximum packet size you want your OBEX session to communicate with. This MUST be
lower than the max packet size the client has reported to you in the connect command
you received from it.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXPutResponseHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the underlying OBEX transport. You will receive any responses to your command response on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXGetResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_response_op_code: OBEXOpCode,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXGetResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_response_op_code: OBEXOpCode, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send a get response to a session’s target.
Parameter inMaxPacketLength: Maximum packet size you want your OBEX session to communicate with. This MUST be
lower than the max packet size the client has reported to you in the connect command
you received from it.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXGetResponseHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the underlying OBEX transport. You will receive any responses to your command response on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXAbortResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_response_op_code: OBEXOpCode,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXAbortResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_response_op_code: OBEXOpCode, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send a abort response to a session’s target.
Parameter inMaxPacketLength: Maximum packet size you want your OBEX session to communicate with. This MUST be
lower than the max packet size the client has reported to you in the connect command
you received from it.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXAbortResponseHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the underlying OBEX transport. You will receive any responses to your command response on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn OBEXSetPathResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon(
&self,
in_response_op_code: OBEXOpCode,
in_optional_headers: *mut c_void,
in_optional_headers_length: usize,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn OBEXSetPathResponse_optionalHeaders_optionalHeadersLength_eventSelector_selectorTarget_refCon( &self, in_response_op_code: OBEXOpCode, in_optional_headers: *mut c_void, in_optional_headers_length: usize, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Send a set path response to a session’s target.
Parameter inMaxPacketLength: Maximum packet size you want your OBEX session to communicate with. This MUST be
lower than the max packet size the client has reported to you in the connect command
you received from it.
Parameter inOptionalHeaders: Can be NULL. Ptr to some data you want to send as your optional headers. Use
the provided header contruction kit in OBEX.h and OBEXHeadersToBytes(void) for convenience.
Parameter inOptionalHeadersLength: Length of data in ptr passed in above.
Parameter inSelector: A VALID selector to be called when something interesting happens due to this call.
Selector in your target object MUST have the following signature, or it
will not be called properly (look for error messages in Console.app):
- (void)OBEXSetPathResponseHandler:(const OBEXSessionEvent*)inSessionEvent;
Parameter inTarget: A VALID target object for the selector.
Parameter inUserRefCon: Whatever you want to pass here. It will be passed back to you in the refCon portion of the
OBEXSessionEvent struct. nil is, of course, OK here.
Returns: An error code value on failure (see OBEX.h and IOReturn.h for possible return values). 0 (kOBEXSuccess) if successful.
A NULL selector or target will result in an error. After return, the data passed in will have been sent over the underlying OBEX transport. You will receive any responses to your command response on your selector.
§Safety
in_optional_headersmust be a valid pointer.in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn getAvailableCommandPayloadLength(
&self,
in_op_code: OBEXOpCode,
) -> OBEXMaxPacketLength
Available on crate features objc2 and OBEX only.
pub unsafe fn getAvailableCommandPayloadLength( &self, in_op_code: OBEXOpCode, ) -> OBEXMaxPacketLength
objc2 and OBEX only.Determine the maximum amount of data you can send in a particular command as an OBEX client session.
Parameter inOpCode: The opcode you are interested in sending (as a client).
Returns: The maximum amount of data a particular packet can handle, after accounting for any command overhead.
Each OBEX Command has a certain amount of overhead. Since the negotiated max packet length does not indicate what the maximum data amount you can send in a particular command’s packet, you can use this function to determine how much data to provide in optional headers or body data headers.
Sourcepub unsafe fn getAvailableCommandResponsePayloadLength(
&self,
in_op_code: OBEXOpCode,
) -> OBEXMaxPacketLength
Available on crate features objc2 and OBEX only.
pub unsafe fn getAvailableCommandResponsePayloadLength( &self, in_op_code: OBEXOpCode, ) -> OBEXMaxPacketLength
objc2 and OBEX only.Determine the maximum amount of data you can send in a particular command response as an OBEX server session.
Parameter inOpCode: The opcode you are interested in responding to (as a server).
Returns: The maximum amount of data a particular packet can handle, after accounting for any command response overhead.
Each OBEX Command response has a certain amount of overhead. Since the negotiated max packet length does not indicate what the maximum data amount you can send in a particular response’s packet, you can use this function to determine how much data to provide in optional headers or body data headers.
Sourcepub unsafe fn getMaxPacketLength(&self) -> OBEXMaxPacketLength
Available on crate features objc2 and OBEX only.
pub unsafe fn getMaxPacketLength(&self) -> OBEXMaxPacketLength
objc2 and OBEX only.Gets current max packet length.
Returns: Max packet length.
This value could change before and after a connect command has been sent or a connect command response has been received, since the recipient could negotiate a lower max packet size.
Sourcepub unsafe fn hasOpenOBEXConnection(&self) -> bool
Available on crate feature objc2 only.
pub unsafe fn hasOpenOBEXConnection(&self) -> bool
objc2 only.Has a successful connect packet been sent and received? This API tells you so.
Returns: True or false, we are OBEX-connected to another OBEX entity.
A “transport” connection may exist (such as a Bluetooth baseband connection), but the OBEX connection may not be established over that transport. If it has been, this function returns true.
Sourcepub unsafe fn setEventCallback(
&self,
in_event_callback: OBEXSessionEventCallback,
)
Available on crate features objc2 and OBEX only.
pub unsafe fn setEventCallback( &self, in_event_callback: OBEXSessionEventCallback, )
objc2 and OBEX only.Sets the C-API callback used when the session recieves data.
Parameter inEventCallback: Function to callback. Should be non-NULL, unless you are attempting to clear the
callback, but doing that doesn’t make much sense.
This is really not intended for client sessions. Only subclasses would really be interested in using this. They should set these when their subclass object is created, because otherwise they will have no way of receiving the initial command data packet. This is a partner to setEventRefCon, described below.
§Safety
in_event_callback must be implemented correctly.
Sourcepub unsafe fn setEventRefCon(&self, in_ref_con: *mut c_void)
Available on crate feature objc2 only.
pub unsafe fn setEventRefCon(&self, in_ref_con: *mut c_void)
objc2 only.Sets the C-API callback refCon used when the session recieves data.
Parameter inRefCon: User’s refCon that will get passed when their event callback is invoked.
This is really not intended for client sessions. Only subclasses would really be interested in using this. They should set these when their subclass object is created, because otherwise they will have no context in their callback.
§Safety
in_ref_con must be a valid pointer.
Sourcepub unsafe fn setEventSelector_target_refCon(
&self,
in_event_selector: Option<Sel>,
in_event_selector_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
)
Available on crate feature objc2 only.
pub unsafe fn setEventSelector_target_refCon( &self, in_event_selector: Option<Sel>, in_event_selector_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, )
objc2 only.Allow you to set a selector to be called when events occur on the OBEX session.
Parameter inEventSelector: Selector to call on the target.
Parameter inEventSelectorTarget: Target to be called with the selector.
Parameter inUserRefCon: User’s refCon that will get passed when their event callback is invoked.
Really not needed to be used, since the event selector will get set when an OBEX command is sent out.
§Safety
in_event_selectormust be a valid selector.in_event_selector_targetshould be of the correct type.in_event_selector_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn serverHandleIncomingData(&self, event: *mut OBEXTransportEvent)
Available on crate features objc2 and OBEX only.
pub unsafe fn serverHandleIncomingData(&self, event: *mut OBEXTransportEvent)
objc2 and OBEX only.Tranport subclasses need to invoke this from their own data-receive handlers. For example, when data is received over a Bluetooth RFCOMM channel in the IOBluetoothOBEXSession, it in turn calls this to dispatch the data. If you do not handle this case, your server session will not work, guaranteed.
Parameter event: New event received from the transport.
Tranport subclasses must call this for OBEX server sessions to work!
§Safety
event must be a valid pointer.
Sourcepub unsafe fn clientHandleIncomingData(&self, event: *mut OBEXTransportEvent)
Available on crate features objc2 and OBEX only.
pub unsafe fn clientHandleIncomingData(&self, event: *mut OBEXTransportEvent)
objc2 and OBEX only.Tranport subclasses need to invoke this from their own data-receive handlers. For example, when data is received over a Bluetooth RFCOMM channel in the IOBluetoothOBEXSession, it in turn calls this to dispatch the data. If you do not handle this case, your server session will not work, guaranteed.
Parameter event: New event received from the transport.
Tranport subclasses must call this for OBEX client sessions to work!
§Safety
event must be a valid pointer.
Sourcepub unsafe fn sendDataToTransport_dataLength(
&self,
in_data_to_send: *mut c_void,
in_data_length: usize,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn sendDataToTransport_dataLength( &self, in_data_to_send: *mut c_void, in_data_length: usize, ) -> OBEXError
objc2 and OBEX only.You must override this to send data over your transport. This does nothing by default, it will return a kOBEXUnsupportedError.
Parameter inDataToSend: Data to shove over the transport to a remote OBEX session.
Parameter inDataLength: Length of data passed in.
Returns: Return whether or not the transport could send the data or not. If you are successful, return kOBEXSuccess, otherwise an interesting error code.
Tranport subclasses must override this! When called you should send the data over the transport to the remote session.
§Safety
in_data_to_send must be a valid pointer.
Sourcepub unsafe fn openTransportConnection_selectorTarget_refCon(
&self,
in_selector: Option<Sel>,
in_target: Option<&AnyObject>,
in_user_ref_con: *mut c_void,
) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn openTransportConnection_selectorTarget_refCon( &self, in_selector: Option<Sel>, in_target: Option<&AnyObject>, in_user_ref_con: *mut c_void, ) -> OBEXError
objc2 and OBEX only.Opens a transport connection to a device. A Bluetooth connection is one example of a transport.
Parameter inSelector: Selector to call for success, failure or timeout.
Parameter inTarget: Target on which to call the selector.
Parameter inUserRefCon: Caller’s reference constant.
Returns: Should return kOBEXSuccess ( 0 ) on success, otherwise an error code.
Tranport subclasses must override this! when called you should attempt to open your transport connection, and if you are successful, return kOBEXSuccess, otherwise an interesting error code.
§Safety
in_selectormust be a valid selector.in_targetshould be of the correct type.in_targetmight not allowNone.in_user_ref_conmust be a valid pointer.
Sourcepub unsafe fn hasOpenTransportConnection(&self) -> u8
Available on crate feature objc2 only.
pub unsafe fn hasOpenTransportConnection(&self) -> u8
objc2 only.You must override this - it will be called periodically to determine if a transport connection is open or not.
Returns: Return whether or not the transport connection is still open.
Tranport subclasses must override this! When called you simply return if the transport connection is still open or not.
Sourcepub unsafe fn closeTransportConnection(&self) -> OBEXError
Available on crate features objc2 and OBEX only.
pub unsafe fn closeTransportConnection(&self) -> OBEXError
objc2 and OBEX only.You must override this - it will be called when the transport connection should be shutdown.
Returns: Return whether or not the transport connection was closed successfully or not. Return OBEXSuccess ( 0 ) on success, otherwise an error code.
Tranport subclasses must override this! When called you should take whatever steps are necessary to actually close down the transport connection.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AnyObject> for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl AsRef<AnyObject> for IOBluetoothOBEXSession
objc2 only.Source§impl AsRef<IOBluetoothOBEXSession> for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl AsRef<IOBluetoothOBEXSession> for IOBluetoothOBEXSession
objc2 only.Source§impl AsRef<NSObject> for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl AsRef<NSObject> for IOBluetoothOBEXSession
objc2 only.Source§impl AsRef<OBEXSession> for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl AsRef<OBEXSession> for IOBluetoothOBEXSession
objc2 only.Source§fn as_ref(&self) -> &OBEXSession
fn as_ref(&self) -> &OBEXSession
Source§impl Borrow<AnyObject> for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl Borrow<AnyObject> for IOBluetoothOBEXSession
objc2 only.Source§impl Borrow<NSObject> for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl Borrow<NSObject> for IOBluetoothOBEXSession
objc2 only.Source§impl Borrow<OBEXSession> for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl Borrow<OBEXSession> for IOBluetoothOBEXSession
objc2 only.Source§fn borrow(&self) -> &OBEXSession
fn borrow(&self) -> &OBEXSession
Source§impl ClassType for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl ClassType for IOBluetoothOBEXSession
objc2 only.Source§const NAME: &'static str = "IOBluetoothOBEXSession"
const NAME: &'static str = "IOBluetoothOBEXSession"
Source§type Super = OBEXSession
type Super = OBEXSession
Source§type ThreadKind = <<IOBluetoothOBEXSession as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<IOBluetoothOBEXSession as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl Debug for IOBluetoothOBEXSession
objc2 only.Source§impl Deref for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl Deref for IOBluetoothOBEXSession
objc2 only.Source§impl Hash for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl Hash for IOBluetoothOBEXSession
objc2 only.Source§impl IOBluetoothRFCOMMChannelDelegate for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl IOBluetoothRFCOMMChannelDelegate for IOBluetoothOBEXSession
objc2 only.Source§unsafe fn rfcommChannelData_data_length(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
data_pointer: *mut c_void,
data_length: usize,
)
unsafe fn rfcommChannelData_data_length( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, data_pointer: *mut c_void, data_length: usize, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§unsafe fn rfcommChannelOpenComplete_status(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
error: c_int,
)
unsafe fn rfcommChannelOpenComplete_status( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, error: c_int, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§unsafe fn rfcommChannelClosed(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
)
unsafe fn rfcommChannelClosed( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§unsafe fn rfcommChannelControlSignalsChanged(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
)
unsafe fn rfcommChannelControlSignalsChanged( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§unsafe fn rfcommChannelFlowControlChanged(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
)
unsafe fn rfcommChannelFlowControlChanged( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§unsafe fn rfcommChannelWriteComplete_refcon_status(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
refcon: *mut c_void,
error: c_int,
)
unsafe fn rfcommChannelWriteComplete_refcon_status( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, refcon: *mut c_void, error: c_int, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§unsafe fn rfcommChannelWriteComplete_refcon_status_bytesWritten(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
refcon: *mut c_void,
error: c_int,
length: usize,
)
unsafe fn rfcommChannelWriteComplete_refcon_status_bytesWritten( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, refcon: *mut c_void, error: c_int, length: usize, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§unsafe fn rfcommChannelQueueSpaceAvailable(
&self,
rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>,
)
unsafe fn rfcommChannelQueueSpaceAvailable( &self, rfcomm_channel: Option<&IOBluetoothRFCOMMChannel>, )
IOBluetoothRFCOMMChannel and IOBluetoothObject only.Source§impl Message for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl Message for IOBluetoothOBEXSession
objc2 only.Source§impl NSObjectProtocol for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl NSObjectProtocol for IOBluetoothOBEXSession
objc2 only.Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_refSource§fn isMemberOfClass(&self, cls: &AnyClass) -> bool
fn isMemberOfClass(&self, cls: &AnyClass) -> bool
Source§fn respondsToSelector(&self, aSelector: Sel) -> bool
fn respondsToSelector(&self, aSelector: Sel) -> bool
Source§fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
Source§fn debugDescription(&self) -> Retained<NSObject>
fn debugDescription(&self) -> Retained<NSObject>
Source§impl PartialEq for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl PartialEq for IOBluetoothOBEXSession
objc2 only.Source§impl RefEncode for IOBluetoothOBEXSession
Available on crate feature objc2 only.
impl RefEncode for IOBluetoothOBEXSession
objc2 only.Source§const ENCODING_REF: Encoding = <OBEXSession as ::objc2::RefEncode>::ENCODING_REF
const ENCODING_REF: Encoding = <OBEXSession as ::objc2::RefEncode>::ENCODING_REF
impl DowncastTarget for IOBluetoothOBEXSession
objc2 only.impl Eq for IOBluetoothOBEXSession
objc2 only.