SyncML Session
[Low Level API]

Interfaces to create, manipulate and delete sessions. More...

Collaboration diagram for SyncML Session:

Functions

SmlBool smlSessionSendCommand (SmlSession *session, SmlCommand *cmd, SmlCommand *parent, SmlStatusReplyCb callback, void *userdata, SmlError **error)
 Sends a command with a parent.
SmlBool smlSessionStartCommand (SmlSession *session, SmlCommand *cmd, SmlCommand *parent, SmlStatusReplyCb callback, void *userdata, SmlError **error)
 starts a command with a parent
SmlBool smlSessionEndCommand (SmlSession *session, SmlCommand *parent, SmlError **error)
 ends a command
SmlBool smlSessionSendReply (SmlSession *session, SmlStatus *status, SmlError **error)
 Sends a reply to a command.

Session Management

These function allow to create and delete sessions



SmlSessionsmlSessionNew (SmlSessionType sessionType, SmlMimeType mimetype, SmlProtocolVersion version, SmlProtocolType protocol, SmlLocation *target, SmlLocation *source, const char *sessionID, unsigned int messageID, SmlError **error)
 Creates a new session.
SmlSessionsmlSessionRef (SmlSession *session)
void smlSessionUnref (SmlSession *session)

Session Control

These function allow to control a session



SmlBool smlSessionFlush (SmlSession *session, SmlBool final, SmlError **error)
 Flushes a session.
SmlBool smlSessionEnd (SmlSession *session, SmlError **error)
 Ends the session.
void smlSessionRestoreTargetURI (SmlSession *session)
SmlBool smlSessionSetResponseURI (SmlSession *session, const char *responseURI, SmlError **error)
void smlSessionUseStringTable (SmlSession *session, SmlBool useStringtable)
void smlSessionUseNumberOfChanges (SmlSession *session, SmlBool support)
void smlSessionUseLargeObjects (SmlSession *session, SmlBool support)
void smlSessionUseOnlyReplace (SmlSession *session, SmlBool onlyReplace)
void smlSessionSetSendingLimit (SmlSession *session, unsigned int limit)
unsigned int smlSessionGetSendingLimit (SmlSession *session)
void smlSessionSetReceivingLimit (SmlSession *session, unsigned int limit)
void smlSessionSetSendingMaxMsgSize (SmlSession *session, unsigned int size)
unsigned int smlSessionGetSendingMaxMsgSize (SmlSession *session)
void smlSessionSetReceivingMaxMsgSize (SmlSession *session, unsigned int size)
void smlSessionSetRemoteMaxMsgSize (SmlSession *session, unsigned int size)
unsigned int smlSessionGetRemoteMaxMsgSize (SmlSession *session)
void smlSessionSetLocalMaxMsgSize (SmlSession *session, unsigned int size)
unsigned int smlSessionGetLocalMaxMsgSize (SmlSession *session)
void smlSessionSetSendingMaxObjSize (SmlSession *session, int limit)
void smlSessionSetRequestedMaxObjSize (SmlSession *session, int limit)
int smlSessionGetSendingMaxObjSize (SmlSession *session)
void smlSessionSetReceivingMaxObjSize (SmlSession *session, unsigned int limit)
unsigned int smlSessionGetReceivingMaxObjSize (SmlSession *session)
void smlSessionSetRemoteMaxObjSize (SmlSession *session, unsigned int limit)
unsigned int smlSessionGetRemoteMaxObjSize (SmlSession *session)
void smlSessionSetLocalMaxObjSize (SmlSession *session, unsigned int limit)
unsigned int smlSessionGetLocalMaxObjSize (SmlSession *session)

Detailed Description

Interfaces to create, manipulate and delete sessions.

A session has a unique id and consists of several packages which again contain several commands.


Function Documentation

SmlSession* smlSessionNew ( SmlSessionType  sessionType,
SmlMimeType  mimetype,
SmlProtocolVersion  version,
SmlProtocolType  protocol,
SmlLocation target,
SmlLocation source,
const char *  sessionID,
unsigned int  messageID,
SmlError **  error 
)

Creates a new session.

Note that if you set the new session callback on the transport, you will get a callback that this session was created (so that it gets easier to register objects at a central place)

Parameters:
sessionType If the session is a server or a client.
mimetype The desired mime type. Choose if you want xml or wbxml
version What version of the protocol do you want to use?
protocol Which syncml protocol do you want to use?
target The remote target of this session. This is used in the header
source The source of this session. Used in the header
sessionID If you already have a sessionID, you can enter it here. Set it to NULL if you want to generate a new ID
messageID The message Id where this session should start. set to 0 to take the default
error A pointer to a error struct
Returns:
The new session or NULL if an error occured

Definition at line 1832 of file sml_session.c.

Here is the call graph for this function:

SmlBool smlSessionFlush ( SmlSession session,
SmlBool  final,
SmlError **  error 
)

Flushes a session.

This flushes the already added statuses and/or commands. Note that if the session has a size limitation, it will get flushed automatically if the size of the already added commands exceeds the limit. Use this function if you want for some reason to flush manually.

Parameters:
session The session to flush
final Set to TRUE if you want to have the final flag added. Otherwise it will just flush the already added statuses and commands
error A error struct
Returns:
TRUE if successful, FALSE otherwise

Definition at line 2010 of file sml_session.c.

Here is the call graph for this function:

SmlBool smlSessionEnd ( SmlSession session,
SmlError **  error 
)

Ends the session.

This function will end the session. This means that no more commands will be sent. If there are replies waiting they will be sent. if there are commands waiting from the remote side which have not yet been answered, they will get a error reply. If you already sent commands in this session, you will receive error replies for your callbacks.

If you registered a session end handler it will get called. if the session is a server type and it receives a command from the remote side for the ended session libsyncml will automatically send an error reply.

Sessions will be deleted from the server session after a timeout.

Parameters:
session The session to flush
error A error struct
Returns:
TRUE if successful, FALSE otherwise

Definition at line 2057 of file sml_session.c.

Here is the call graph for this function:

void smlSessionSetRemoteMaxObjSize ( SmlSession session,
unsigned int  limit 
)

Sets the maximum obj size for the remote peer. If we try to send an item to the remote side which is larger than this limit we return an error

Possible values for limit are

0 means that we can send objects of any size > 0 means that a limit is set

Definition at line 2325 of file sml_session.c.

Here is the call graph for this function:

unsigned int smlSessionGetRemoteMaxObjSize ( SmlSession session  ) 

Returns the maximum obj size that we can send. If both the sending and the requested limit are set, this function will return the smaller one of both.

Otherwise it will return the larger number.

Definition at line 2339 of file sml_session.c.

Referenced by smlSessionSetLocalMaxObjSize().

Here is the call graph for this function:

void smlSessionSetLocalMaxObjSize ( SmlSession session,
unsigned int  limit 
)

Sets the obj size that will get transmitted to the remote side in the <MaxObjSize> tag. So this sets the maximum size of the object we want to receive. If an item is larger, we return an error

In this function, 0 means that no limit is set. a value > 0 means that a limit is set. note that this is required if large object handling has to be supported.

The value is stored in the session since it has to be used by the assembler (to fill the MaxObjSize tag) as well as by the session (to determine when to send an error if the limit is violated)

Definition at line 2363 of file sml_session.c.

Here is the call graph for this function:

SmlBool smlSessionSendCommand ( SmlSession session,
SmlCommand cmd,
SmlCommand parent,
SmlStatusReplyCb  callback,
void *  userdata,
SmlError **  error 
)

Sends a command with a parent.

This function can be used to send subcommands (for example a "Add" inside a "Sync"). You are guaranteed that you will get a callback if this function returns TRUE. So either this function returns FALSE (might occur if the command is not complete or if a OOM occured) or you will later get a reply or an error in the callback.

Note that if you dont set a callback function, libsyncml will automatically add a "NoResp".

Parameters:
session The session
cmd The command to send
parent The parent of this command. NULL for syncbody
callback The callback that will receive the reply. Set to NULL if you dont want any replies.
userdata The userdata to pass to the callback
error A error struct
Returns:
TRUE if successful, FALSE otherwise

Definition at line 2422 of file sml_session.c.

Referenced by smlDevInfAgentRequestDevInf(), smlDsSessionCloseMap(), and smlDsSessionSendAlert().

Here is the call graph for this function:

SmlBool smlSessionStartCommand ( SmlSession session,
SmlCommand cmd,
SmlCommand parent,
SmlStatusReplyCb  callback,
void *  userdata,
SmlError **  error 
)

starts a command with a parent

Parameters:
session The session
cmd The command to send
parent The parent of this command
callback The callback that will receive the reply. Set to NULL if you dont want any replies.
userdata The userdata to pass to the callback
error A error struct
Returns:
TRUE if successful, FALSE otherwise

Definition at line 2454 of file sml_session.c.

Referenced by smlDsSessionSendSync(), and smlSessionSendCommand().

Here is the call graph for this function:

SmlBool smlSessionEndCommand ( SmlSession session,
SmlCommand parent,
SmlError **  error 
)

ends a command

Parameters:
session The session
parent The parent of this command, NULL for syncbody
error A error struct
Returns:
TRUE if successful, FALSE otherwise

Definition at line 2495 of file sml_session.c.

Referenced by smlDsSessionCloseSync(), and smlSessionSendCommand().

Here is the call graph for this function:

SmlBool smlSessionSendReply ( SmlSession session,
SmlStatus status,
SmlError **  error 
)

Sends a reply to a command.

This function sends a status reply to a command.

This function might return an error in the case of an OOM situation or if you forgot to fill in parts of the reply

Parameters:
session The session
status The status to send
error A error struct
Returns:
TRUE if successful, FALSE otherwise

Definition at line 2536 of file sml_session.c.

Here is the call graph for this function:


Generated by  doxygen 1.6.2