OBEXSession

Struct OBEXSession 

Source
#[repr(C)]
pub struct OBEXSession { /* private fields */ }
Available on crate features OBEXSession and objc2 only.
Expand description

Implementations§

Source§

impl OBEXSession

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

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

Available on crate feature 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.

Source

pub unsafe fn getAvailableCommandPayloadLength( &self, in_op_code: OBEXOpCode, ) -> OBEXMaxPacketLength

Available on crate feature 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.

Source

pub unsafe fn getAvailableCommandResponsePayloadLength( &self, in_op_code: OBEXOpCode, ) -> OBEXMaxPacketLength

Available on crate feature 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.

Source

pub unsafe fn getMaxPacketLength(&self) -> OBEXMaxPacketLength

Available on crate feature 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.

Source

pub unsafe fn hasOpenOBEXConnection(&self) -> bool

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.

Source

pub unsafe fn setEventCallback( &self, in_event_callback: OBEXSessionEventCallback, )

Available on crate feature 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.

Source

pub unsafe fn setEventRefCon(&self, in_ref_con: *mut c_void)

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.

Source

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, )

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.

Source

pub unsafe fn serverHandleIncomingData(&self, event: *mut OBEXTransportEvent)

Available on crate feature 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!

Source

pub unsafe fn clientHandleIncomingData(&self, event: *mut OBEXTransportEvent)

Available on crate feature 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!

Source

pub unsafe fn sendDataToTransport_dataLength( &self, in_data_to_send: *mut c_void, in_data_length: usize, ) -> OBEXError

Available on crate feature 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.

Source

pub 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 feature 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.

Source

pub unsafe fn hasOpenTransportConnection(&self) -> u8

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.

Source

pub unsafe fn closeTransportConnection(&self) -> OBEXError

Available on crate feature 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.

Source§

impl OBEXSession

Methods declared on superclass NSObject.

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

Source

pub unsafe fn new() -> Retained<Self>

Methods from Deref<Target = NSObject>§

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesn’t recognize.

See Apple’s documentation for details.

Methods from Deref<Target = AnyObject>§

Source

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());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

👎Deprecated: this is difficult to use correctly, use 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.

Source

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 OBEXSession

Source§

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<NSObject> for OBEXSession

Source§

fn as_ref(&self) -> &NSObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<OBEXSession> for IOBluetoothOBEXSession

Available on crate feature IOBluetoothOBEXSession only.
Source§

fn as_ref(&self) -> &OBEXSession

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<OBEXSession> for OBEXSession

Source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<AnyObject> for OBEXSession

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for OBEXSession

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<OBEXSession> for IOBluetoothOBEXSession

Available on crate feature IOBluetoothOBEXSession only.
Source§

fn borrow(&self) -> &OBEXSession

Immutably borrows from an owned value. Read more
Source§

impl ClassType for OBEXSession

Source§

const NAME: &'static str = "OBEXSession"

The name of the Objective-C class that this type represents. Read more
Source§

type Super = NSObject

The superclass of this class. Read more
Source§

type ThreadKind = <<OBEXSession as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Source§

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Source§

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Source§

impl Debug for OBEXSession

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for OBEXSession

Source§

type Target = NSObject

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Hash for OBEXSession

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for OBEXSession

Source§

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

impl NSObjectProtocol for OBEXSession

Source§

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Source§

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Source§

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Source§

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

👎Deprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Source§

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Source§

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Source§

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Source§

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Source§

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Source§

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Source§

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Source§

impl PartialEq for OBEXSession

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl RefEncode for OBEXSession

Source§

const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF

The Objective-C type-encoding for a reference of this type. Read more
Source§

impl DowncastTarget for OBEXSession

Source§

impl Eq for OBEXSession

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Source§

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,