liblinphone  3.9.1
Typedefs | Enumerations | Functions
Managing generic subscriptions and publishes

Typedefs

typedef struct _LinphoneEvent LinphoneEvent
 
typedef enum _LinphoneSubscriptionDir LinphoneSubscriptionDir
 
typedef enum _LinphoneSubscriptionState LinphoneSubscriptionState
 
typedef enum _LinphonePublishState LinphonePublishState
 
typedef void(* LinphoneCoreNotifyReceivedCb) (LinphoneCore *lc, LinphoneEvent *lev, const char *notified_event, const LinphoneContent *body)
 
typedef void(* LinphoneCoreSubscriptionStateChangedCb) (LinphoneCore *lc, LinphoneEvent *lev, LinphoneSubscriptionState state)
 
typedef void(* LinphoneCorePublishStateChangedCb) (LinphoneCore *lc, LinphoneEvent *lev, LinphonePublishState state)
 

Enumerations

enum  _LinphoneSubscriptionDir {
  LinphoneSubscriptionIncoming,
  LinphoneSubscriptionOutgoing,
  LinphoneSubscriptionInvalidDir
}
 
enum  _LinphoneSubscriptionState {
  LinphoneSubscriptionNone,
  LinphoneSubscriptionOutgoingProgress,
  LinphoneSubscriptionIncomingReceived,
  LinphoneSubscriptionPending,
  LinphoneSubscriptionActive,
  LinphoneSubscriptionTerminated,
  LinphoneSubscriptionError,
  LinphoneSubscriptionExpiring
}
 
enum  _LinphonePublishState {
  LinphonePublishNone,
  LinphonePublishProgress,
  LinphonePublishOk,
  LinphonePublishError,
  LinphonePublishExpiring,
  LinphonePublishCleared
}
 

Functions

LinphoneEventlinphone_core_subscribe (LinphoneCore *lc, const LinphoneAddress *resource, const char *event, int expires, const LinphoneContent *body)
 
LinphoneEventlinphone_core_create_subscribe (LinphoneCore *lc, const LinphoneAddress *resource, const char *event, int expires)
 
int linphone_event_send_subscribe (LinphoneEvent *ev, const LinphoneContent *body)
 
int linphone_event_update_subscribe (LinphoneEvent *lev, const LinphoneContent *body)
 
int linphone_event_accept_subscription (LinphoneEvent *lev)
 
int linphone_event_deny_subscription (LinphoneEvent *lev, LinphoneReason reason)
 
int linphone_event_notify (LinphoneEvent *lev, const LinphoneContent *body)
 
LinphoneEventlinphone_core_publish (LinphoneCore *lc, const LinphoneAddress *resource, const char *event, int expires, const LinphoneContent *body)
 
LinphoneEventlinphone_core_create_publish (LinphoneCore *lc, const LinphoneAddress *resource, const char *event, int expires)
 
int linphone_event_send_publish (LinphoneEvent *lev, const LinphoneContent *body)
 
int linphone_event_update_publish (LinphoneEvent *lev, const LinphoneContent *body)
 
LinphoneReason linphone_event_get_reason (const LinphoneEvent *lev)
 
const LinphoneErrorInfolinphone_event_get_error_info (const LinphoneEvent *lev)
 
LinphoneSubscriptionState linphone_event_get_subscription_state (const LinphoneEvent *lev)
 
LinphonePublishState linphone_event_get_publish_state (const LinphoneEvent *lev)
 
LinphoneSubscriptionDir linphone_event_get_subscription_dir (LinphoneEvent *lev)
 
void linphone_event_set_user_data (LinphoneEvent *ev, void *up)
 
void * linphone_event_get_user_data (const LinphoneEvent *ev)
 
void linphone_event_add_custom_header (LinphoneEvent *ev, const char *name, const char *value)
 
const char * linphone_event_get_custom_header (LinphoneEvent *ev, const char *name)
 
void linphone_event_terminate (LinphoneEvent *lev)
 
LinphoneEventlinphone_event_ref (LinphoneEvent *lev)
 
void linphone_event_unref (LinphoneEvent *lev)
 
const char * linphone_event_get_name (const LinphoneEvent *lev)
 
const LinphoneAddresslinphone_event_get_from (const LinphoneEvent *lev)
 
const LinphoneAddresslinphone_event_get_resource (const LinphoneEvent *lev)
 
LinphoneCorelinphone_event_get_core (const LinphoneEvent *lev)
 

Detailed Description

The LinphoneEvent api allows application to control subscriptions, receive notifications and make publish to peers, in a generic manner.

Typedef Documentation

typedef struct _LinphoneEvent LinphoneEvent

Object representing an event state, which is subcribed or published.

See also
linphone_core_publish()
linphone_core_subscribe()

Typedef alias for _LinphoneSubscriptionDir

Typedef for subscription state enum.

Typedef for publish state enum

typedef void(* LinphoneCoreNotifyReceivedCb) (LinphoneCore *lc, LinphoneEvent *lev, const char *notified_event, const LinphoneContent *body)

Callback prototype for notifying the application about notification received from the network.

typedef void(* LinphoneCoreSubscriptionStateChangedCb) (LinphoneCore *lc, LinphoneEvent *lev, LinphoneSubscriptionState state)

Callback prototype for notifying the application about changes of subscription states, including arrival of new subscriptions.

typedef void(* LinphoneCorePublishStateChangedCb) (LinphoneCore *lc, LinphoneEvent *lev, LinphonePublishState state)

Callback prototype for notifying the application about changes of publish states.

Enumeration Type Documentation

Enum for subscription direction (incoming or outgoing).

Enumerator
LinphoneSubscriptionIncoming 

Incoming subscription.

LinphoneSubscriptionOutgoing 

Outgoing subscription.

LinphoneSubscriptionInvalidDir 

Invalid subscription direction.

Enum for subscription states.

Enumerator
LinphoneSubscriptionNone 

Initial state, should not be used.

LinphoneSubscriptionOutgoingProgress 

An outgoing subcription was sent

LinphoneSubscriptionIncomingReceived 

An incoming subcription is received

LinphoneSubscriptionPending 

Subscription is pending, waiting for user approval

LinphoneSubscriptionActive 

Subscription is accepted.

LinphoneSubscriptionTerminated 

Subscription is terminated normally

LinphoneSubscriptionError 

Subscription encountered an error, indicated by linphone_event_get_reason()

LinphoneSubscriptionExpiring 

Subscription is about to expire, only sent if [sip]->refresh_generic_subscribe property is set to 0.

Enum for publish states.

Enumerator
LinphonePublishNone 

Initial state, do not use

LinphonePublishProgress 

An outgoing publish was created and submitted

LinphonePublishOk 

Publish is accepted.

LinphonePublishError 

Publish encoutered an error, linphone_event_get_reason() gives reason code

LinphonePublishExpiring 

Publish is about to expire, only sent if [sip]->refresh_generic_publish property is set to 0.

LinphonePublishCleared 

Event has been un published

Function Documentation

LinphoneEvent* linphone_core_subscribe ( LinphoneCore lc,
const LinphoneAddress resource,
const char *  event,
int  expires,
const LinphoneContent body 
)

Create an outgoing subscription, specifying the destination resource, the event name, and an optional content body. If accepted, the subscription runs for a finite period, but is automatically renewed if not terminated before.

Parameters
lcthe LinphoneCore
resourcethe destination resource
eventthe event name
expiresthe whished duration of the subscription
bodyan optional body, may be NULL.
Returns
a LinphoneEvent holding the context of the created subcription.
LinphoneEvent* linphone_core_create_subscribe ( LinphoneCore lc,
const LinphoneAddress resource,
const char *  event,
int  expires 
)

Create an outgoing subscription, specifying the destination resource, the event name, and an optional content body. If accepted, the subscription runs for a finite period, but is automatically renewed if not terminated before. Unlike linphone_core_subscribe() the subscription isn't sent immediately. It will be send when calling linphone_event_send_subscribe().

Parameters
lcthe LinphoneCore
resourcethe destination resource
eventthe event name
expiresthe whished duration of the subscription
Returns
a LinphoneEvent holding the context of the created subcription.
int linphone_event_send_subscribe ( LinphoneEvent ev,
const LinphoneContent body 
)

Send a subscription previously created by linphone_core_create_subscribe().

Parameters
evthe LinphoneEvent
bodyoptional content to attach with the subscription.
Returns
0 if successful, -1 otherwise.
int linphone_event_update_subscribe ( LinphoneEvent lev,
const LinphoneContent body 
)

Update (refresh) an outgoing subscription.

Parameters
leva LinphoneEvent
bodyan optional body to include in the subscription update, may be NULL.
int linphone_event_accept_subscription ( LinphoneEvent lev)

Accept an incoming subcription.

int linphone_event_deny_subscription ( LinphoneEvent lev,
LinphoneReason  reason 
)

Deny an incoming subscription with given reason.

int linphone_event_notify ( LinphoneEvent lev,
const LinphoneContent body 
)

Send a notification.

Parameters
leva LinphoneEvent corresponding to an incoming subscription previously received and accepted.
bodyan optional body containing the actual notification data.
Returns
0 if successful, -1 otherwise.
LinphoneEvent* linphone_core_publish ( LinphoneCore lc,
const LinphoneAddress resource,
const char *  event,
int  expires,
const LinphoneContent body 
)

Publish an event state. This first create a LinphoneEvent with linphone_core_create_publish() and calls linphone_event_send_publish() to actually send it. After expiry, the publication is refreshed unless it is terminated before.

Parameters
lcthe LinphoneCore
resourcethe resource uri for the event
eventthe event name
expiresthe lifetime of event being published, -1 if no associated duration, in which case it will not be refreshed.
bodythe actual published data
Returns
the LinphoneEvent holding the context of the publish.
LinphoneEvent* linphone_core_create_publish ( LinphoneCore lc,
const LinphoneAddress resource,
const char *  event,
int  expires 
)

Create a publish context for an event state. After being created, the publish must be sent using linphone_event_send_publish(). After expiry, the publication is refreshed unless it is terminated before.

Parameters
lcthe LinphoneCore
resourcethe resource uri for the event
eventthe event name
expiresthe lifetime of event being published, -1 if no associated duration, in which case it will not be refreshed.
Returns
the LinphoneEvent holding the context of the publish.
int linphone_event_send_publish ( LinphoneEvent lev,
const LinphoneContent body 
)

Send a publish created by linphone_core_create_publish().

Parameters
levthe LinphoneEvent
bodythe new data to be published
int linphone_event_update_publish ( LinphoneEvent lev,
const LinphoneContent body 
)

Update (refresh) a publish.

Parameters
levthe LinphoneEvent
bodythe new data to be published
LinphoneReason linphone_event_get_reason ( const LinphoneEvent lev)

Return reason code (in case of error state reached).

const LinphoneErrorInfo* linphone_event_get_error_info ( const LinphoneEvent lev)

Get full details about an error occured.

LinphoneSubscriptionState linphone_event_get_subscription_state ( const LinphoneEvent lev)

Get subscription state. If the event object was not created by a subscription mechanism, LinphoneSubscriptionNone is returned.

LinphonePublishState linphone_event_get_publish_state ( const LinphoneEvent lev)

Get publish state. If the event object was not created by a publish mechanism, LinphonePublishNone is returned.

LinphoneSubscriptionDir linphone_event_get_subscription_dir ( LinphoneEvent lev)

Get subscription direction. If the object wasn't created by a subscription mechanism, LinphoneSubscriptionInvalidDir is returned.

void linphone_event_set_user_data ( LinphoneEvent ev,
void *  up 
)

Set a user (application) pointer.

void* linphone_event_get_user_data ( const LinphoneEvent ev)

Retrieve user pointer.

void linphone_event_add_custom_header ( LinphoneEvent ev,
const char *  name,
const char *  value 
)

Add a custom header to an outgoing susbscription or publish.

Parameters
evthe LinphoneEvent
nameheader's name
valuethe header's value.
const char* linphone_event_get_custom_header ( LinphoneEvent ev,
const char *  name 
)

Obtain the value of a given header for an incoming subscription.

Parameters
evthe LinphoneEvent
nameheader's name
Returns
the header's value or NULL if such header doesn't exist.
void linphone_event_terminate ( LinphoneEvent lev)

Terminate an incoming or outgoing subscription that was previously acccepted, or a previous publication. This function does not unref the object. The core will unref() if it does not need this object anymore.

For subscribed event, when the subscription is terminated normally or because of an error, the core will unref. For published events, no unref is performed. This is because it is allowed to re-publish an expired publish, as well as retry it in case of error.

LinphoneEvent* linphone_event_ref ( LinphoneEvent lev)

Increase reference count of LinphoneEvent. By default LinphoneEvents created by the core are owned by the core only. An application that wishes to retain a reference to it must call linphone_event_ref(). When this reference is no longer needed, linphone_event_unref() must be called.

void linphone_event_unref ( LinphoneEvent lev)

Decrease reference count.

See also
linphone_event_ref()
const char* linphone_event_get_name ( const LinphoneEvent lev)

Get the name of the event as specified in the event package RFC.

const LinphoneAddress* linphone_event_get_from ( const LinphoneEvent lev)

Get the "from" address of the subscription.

const LinphoneAddress* linphone_event_get_resource ( const LinphoneEvent lev)

Get the resource address of the subscription or publish.

LinphoneCore* linphone_event_get_core ( const LinphoneEvent lev)

Returns back pointer to the LinphoneCore that created this LinphoneEvent