libimobiledevice  1.2.0
Macros | Typedefs | Enumerations | Functions
service.h File Reference

Generic basic service implementation to inherit. More...

Macros

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

Typedefs

typedef struct
service_client_private 
service_client_private
 
typedef service_client_private * service_client_t
 The client handle. More...
 

Enumerations

enum  service_error_t {
  SERVICE_E_SUCCESS = 0,
  SERVICE_E_INVALID_ARG = -1,
  SERVICE_E_MUX_ERROR = -3,
  SERVICE_E_SSL_ERROR = -4,
  SERVICE_E_START_SERVICE_ERROR = -5,
  SERVICE_E_UNKNOWN_ERROR = -256
}
 Error Codes.
 

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, int32_t(*constructor_func)(idevice_t, lockdownd_service_descriptor_t, void **), int32_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...
 

Detailed Description

Generic basic service implementation to inherit.

Typedef Documentation

typedef service_client_private* service_client_t

The client handle.

Function Documentation

service_error_t service_client_factory_start_service ( idevice_t  device,
const char *  service_name,
void **  client,
const char *  label,
int32_t(*)(idevice_t, lockdownd_service_descriptor_t, void **)  constructor_func,
int32_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.
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.
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.
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.
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.
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.
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.
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.