Liblinphone  3.10.2
Defines | Typedefs | Enumerations | Functions
Managing generic subscriptions and publishes

Defines

#define LinphoneSubscriptionOutoingInit   LinphoneSubscriptionOutgoingInit
#define LinphoneSubscriptionOutgoingInit   LinphoneSubscriptionOutgoingProgress

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

const char * linphone_subscription_state_to_string (LinphoneSubscriptionState state)
const char * linphone_publish_state_to_string (LinphonePublishState state)
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)
LinphoneEventlinphone_core_create_notify (LinphoneCore *lc, const LinphoneAddress *resource, const char *event)
int linphone_event_send_subscribe (LinphoneEvent *ev, const LinphoneContent *body)
int linphone_event_update_subscribe (LinphoneEvent *lev, const LinphoneContent *body)
int linphone_event_refresh_subscribe (LinphoneEvent *lev)
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)
int linphone_event_refresh_publish (LinphoneEvent *lev)
void linphone_event_pause_publish (LinphoneEvent *lev)
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 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.

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

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

typedef struct _LinphoneEvent LinphoneEvent

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

See also:
linphone_core_publish()
linphone_core_subscribe()

Typedef for publish state enum

Typedef alias for _LinphoneSubscriptionDir

Typedef for subscription state enum.


Enumeration Type Documentation

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

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.


Function Documentation

LinphoneEvent* linphone_core_create_notify ( LinphoneCore lc,
const LinphoneAddress resource,
const char *  event 
)

Create an out-of-dialog notification, specifying the destination resource, the event name. The notification can be send with linphone_event_notify().

Parameters:
lcthe LinphoneCore
resourcethe destination resource
eventthe event name
Returns:
a LinphoneEvent holding the context of the notification.
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.
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.
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_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.

Accept an incoming subcription.

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.

Deny an incoming subscription with given reason.

Returns back pointer to the LinphoneCore that created this LinphoneEvent

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.

Get full details about an error occured.

Get the "from" address of the subscription.

const char* linphone_event_get_name ( const LinphoneEvent lev)

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

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

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

Get the resource address of the subscription or publish.

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

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

Retrieve user pointer.

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.

Prevent an event from refreshing its publish. This is useful to let registrations to expire naturally (or) when the application wants to keep control on when refreshes are sent. The refreshing operations can be resumed with linphone_proxy_config_refresh_register().

Parameters:
[in]levLinphoneEvent object.

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.

Refresh an outgoing publish keeping the same body.

Parameters:
levLinphoneEvent object.
Returns:
0 if successful, -1 otherwise.

Refresh an outgoing subscription keeping the same body.

Parameters:
levLinphoneEvent object.
Returns:
0 if successful, -1 otherwise.
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

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.
void linphone_event_set_user_data ( LinphoneEvent ev,
void *  up 
)

Set a user (application) pointer.

Terminate an incoming or outgoing subscription that was previously acccepted, or a previous publication. The LinphoneEvent shall not be used anymore after this operation, unless the application explicitely took a reference on the object with linphone_event_ref().

Decrease reference count.

See also:
linphone_event_ref()
int linphone_event_update_publish ( LinphoneEvent lev,
const LinphoneContent body 
)

Update (refresh) a publish.

Parameters:
levthe LinphoneEvent
bodythe new data to be published

Update (refresh) an outgoing subscription, changing the body.

Parameters:
leva LinphoneEvent
bodyan optional body to include in the subscription update, may be NULL.