libimobiledevice  1.1.6
Macros | Typedefs | Functions
service.h File Reference

Generic basic service implementation to inherit. More...

Macros

#define SERVICE_CONSTRUCTOR(x)   (int16_t (*)(idevice_t, lockdownd_service_descriptor_t, void**))(x)
 

Typedefs

typedef int16_t service_error_t
 Represents an error code. More...
 
typedef service_client_privateservice_client_t
 The client handle. More...
 

Functions

service_error_t service_client_new (idevice_t device, lockdownd_service_descriptor_t service, service_client_t *client)
 Creates a new service for the specified service descriptor. More...
 
service_error_t service_client_factory_start_service (idevice_t device, const char *service_name, void **client, const char *label, int16_t(*constructor_func)(idevice_t, lockdownd_service_descriptor_t, void **), int16_t *error_code)
 Starts a new service on the specified device with given name and connects to it. More...
 
service_error_t service_client_free (service_client_t client)
 Frees a service instance. More...
 
service_error_t service_send (service_client_t client, const char *data, uint32_t size, uint32_t *sent)
 Sends data using the given service client. More...
 
service_error_t service_receive_with_timeout (service_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout)
 Receives data using the given service client with specified timeout. More...
 
service_error_t service_receive (service_client_t client, char *data, uint32_t size, uint32_t *received)
 Receives data using the given service client. More...
 
service_error_t service_enable_ssl (service_client_t client)
 Enable SSL for the given service client. More...
 
service_error_t service_disable_ssl (service_client_t client)
 Disable SSL for the given service client. More...
 

Error Codes

#define SERVICE_E_SUCCESS   0
 
#define SERVICE_E_INVALID_ARG   -1
 
#define SERVICE_E_MUX_ERROR   -3
 
#define SERVICE_E_SSL_ERROR   -4
 
#define SERVICE_E_START_SERVICE_ERROR   -5
 
#define SERVICE_E_UNKNOWN_ERROR   -256
 

Detailed Description

Generic basic service implementation to inherit.

Typedef Documentation

The client handle.

typedef int16_t service_error_t

Represents an error code.

Function Documentation

service_error_t service_client_factory_start_service ( idevice_t  device,
const char *  service_name,
void **  client,
const char *  label,
int16_t(*)(idevice_t, lockdownd_service_descriptor_t, void **)  constructor_func,
int16_t *  error_code 
)

Starts a new service on the specified device with given name and connects to it.

Parameters
deviceThe device to connect to.
service_nameThe name of the service to start.
clientPointer that will point to a newly allocated service_client_t upon successful return. Must be freed using service_client_free() after use.
labelThe label to use for communication. Usually the program name. Pass NULL to disable sending the label in requests to lockdownd.
Returns
SERVICE_E_SUCCESS on success, or a SERVICE_E_* error code otherwise.

References lockdownd_client_free(), lockdownd_client_new_with_handshake(), lockdownd_service_descriptor_free(), lockdownd_start_service(), and service_client_new().

Referenced by afc_client_start_service(), diagnostics_relay_client_start_service(), file_relay_client_start_service(), heartbeat_client_start_service(), house_arrest_client_start_service(), instproxy_client_start_service(), misagent_client_start_service(), mobile_image_mounter_start_service(), mobilebackup2_client_start_service(), mobilebackup_client_start_service(), mobilesync_client_start_service(), np_client_start_service(), sbservices_client_start_service(), screenshotr_client_start_service(), syslog_relay_client_start_service(), and webinspector_client_start_service().

service_error_t service_client_free ( service_client_t  client)

Frees a service instance.

Parameters
clientThe service instance to free.
Returns
SERVICE_E_SUCCESS on success, SERVICE_E_INVALID_ARG when client is invalid, or a SERVICE_E_UNKNOWN_ERROR when another error occured.

References idevice_disconnect().

Referenced by afc_client_free(), afc_client_new(), and syslog_relay_client_free().

service_error_t service_client_new ( idevice_t  device,
lockdownd_service_descriptor_t  service,
service_client_t client 
)

Creates a new service for the specified service descriptor.

Parameters
deviceThe device to connect to.
serviceThe service descriptor returned by lockdownd_start_service.
clientPointer that will be set to a newly allocated service_client_t upon successful return.
Returns
SERVICE_E_SUCCESS on success, SERVICE_E_INVALID_ARG when one of the arguments is invalid, or SERVICE_E_MUX_ERROR when connecting to the device failed.

References idevice_connect(), and service_enable_ssl().

Referenced by afc_client_new(), service_client_factory_start_service(), and syslog_relay_client_new().

service_error_t service_disable_ssl ( service_client_t  client)

Disable SSL for the given service client.

Parameters
clientThe connected service client for that SSL should be disabled.
Returns
SERVICE_E_SUCCESS on success, SERVICE_E_INVALID_ARG if client or client->connection is NULL, or SERVICE_E_UNKNOWN_ERROR otherwise.

References idevice_connection_disable_ssl().

service_error_t service_enable_ssl ( service_client_t  client)

Enable SSL for the given service client.

Parameters
clientThe connected service client for that SSL should be enabled.
Returns
SERVICE_E_SUCCESS on success, SERVICE_E_INVALID_ARG if client or client->connection is NULL, SERVICE_E_SSL_ERROR when SSL could not be enabled, or SERVICE_E_UNKNOWN_ERROR otherwise.

References idevice_connection_enable_ssl().

Referenced by service_client_new().

service_error_t service_receive ( service_client_t  client,
char *  data,
uint32_t  size,
uint32_t *  received 
)

Receives data using the given service client.

Parameters
clientThe service client to use for receiving
dataBuffer that will be filled with the data received
sizeNumber of bytes to receive
receivedNumber of bytes received (can be NULL to ignore)
Returns
SERVICE_E_SUCCESS on success, SERVICE_E_INVALID_ARG when one or more parameters are invalid, SERVICE_E_MUX_ERROR when a communication error occurs, or SERVICE_E_UNKNOWN_ERROR when an unspecified error occurs.

References service_receive_with_timeout().

Referenced by mobilebackup2_receive_raw().

service_error_t service_receive_with_timeout ( service_client_t  client,
char *  data,
uint32_t  size,
uint32_t *  received,
unsigned int  timeout 
)

Receives data using the given service client with specified timeout.

Parameters
clientThe service client to use for receiving
dataBuffer that will be filled with the data received
sizeNumber of bytes to receive
receivedNumber of bytes received (can be NULL to ignore)
timeoutMaximum time in milliseconds to wait for data.
Returns
SERVICE_E_SUCCESS on success, SERVICE_E_INVALID_ARG when one or more parameters are invalid, SERVICE_E_MUX_ERROR when a communication error occurs, or SERVICE_E_UNKNOWN_ERROR when an unspecified error occurs.

References idevice_connection_receive_timeout().

Referenced by service_receive(), and syslog_relay_receive_with_timeout().

service_error_t service_send ( service_client_t  client,
const char *  data,
uint32_t  size,
uint32_t *  sent 
)

Sends data using the given service client.

Parameters
clientThe service client to use for sending.
dataData to send
sizeSize of the data to send
sentNumber of bytes sent (can be NULL to ignore)
Returns
SERVICE_E_SUCCESS on success, SERVICE_E_INVALID_ARG when one or more parameters are invalid, or SERVICE_E_UNKNOWN_ERROR when an unspecified error occurs.

References idevice_connection_send().

Referenced by mobile_image_mounter_upload_image(), and mobilebackup2_send_raw().