00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SML_SESSION_H_
00023 #define _SML_SESSION_H_
00024
00025 typedef enum SmlSessionType {
00026 SML_SESSION_TYPE_SERVER,
00027 SML_SESSION_TYPE_CLIENT
00028 } SmlSessionType;
00029
00030 typedef enum SmlSessionEventType {
00031 SML_SESSION_EVENT_ERROR,
00032 SML_SESSION_EVENT_COMMAND_START,
00033 SML_SESSION_EVENT_CHILD_COMMAND,
00034 SML_SESSION_EVENT_HEADER_REPLY,
00035 SML_SESSION_EVENT_FINAL,
00036 SML_SESSION_EVENT_END,
00037 SML_SESSION_EVENT_FLUSH,
00038 SML_SESSION_EVENT_COMMAND_END,
00039 SML_SESSION_EVENT_RESPONSE_URI,
00040 SML_SESSION_EVENT_ESTABLISHED,
00041 } SmlSessionEventType;
00042
00043 typedef void (* SmlSessionEventCallback) (SmlSession *session, SmlSessionEventType type, SmlCommand *command, SmlCommand *parent, SmlStatus *reply, SmlError *error, void *userdata);
00044 typedef void (* SmlSessionDataCallback) (SmlSession *session, SmlTransportData *data, void *userdata);
00045
00046
00047 SmlSession *smlSessionNew(SmlSessionType sessionType, SmlMimeType mimetype, SmlProtocolVersion version, SmlProtocolType protocol, SmlLocation *target, SmlLocation *source, const char *sessionID, unsigned int messageID, SmlError **error);
00048 SmlSession *smlSessionRef(SmlSession *session);
00049 void smlSessionUnref(SmlSession *session);
00050 void smlSessionSetEventCallback(SmlSession *session, SmlSessionEventCallback callback, void *userdata);
00051 void smlSessionSetDataCallback(SmlSession *session, SmlSessionDataCallback callback, void *userdata);
00052
00053
00054 SmlBool smlSessionFlush(SmlSession *session, SmlBool final, SmlError **error);
00055 SmlBool smlSessionEnd(SmlSession *session, SmlError **error);
00056 void smlSessionUseStringTable(SmlSession *session, SmlBool useStringtable);
00057 void smlSessionUseOnlyReplace(SmlSession *session, SmlBool onlyReplace);
00058 void smlSessionUseNumberOfChanges(SmlSession *session, SmlBool support);
00059 void smlSessionUseLargeObjects(SmlSession *session, SmlBool support);
00060
00061 void smlSessionSetRemoteMaxMsgSize(SmlSession *session, unsigned int size);
00062 void smlSessionSetLocalMaxMsgSize(SmlSession *session, unsigned int size);
00063 unsigned int smlSessionGetRemoteMaxMsgSize(SmlSession *session);
00064 unsigned int smlSessionGetLocalMaxMsgSize(SmlSession *session);
00065
00066 void smlSessionSetLocalMaxObjSize(SmlSession *session, unsigned int limit);
00067 void smlSessionSetRemoteMaxObjSize(SmlSession *session, unsigned int limit);
00068 unsigned int smlSessionGetLocalMaxObjSize(SmlSession *session);
00069 unsigned int smlSessionGetRemoteMaxObjSize(SmlSession *session);
00070
00071 const char *smlSessionGetSessionID(SmlSession *session);
00072 void smlSessionSetSessionID(SmlSession *session, const char *sessionID);
00073 SmlProtocolVersion smlSessionGetVersion(SmlSession *session);
00074 void smlSessionDispatchEvent(SmlSession *session, SmlSessionEventType type, SmlCommand *cmd, SmlCommand *parent, SmlStatus *headerreply, SmlError *error);
00075 SmlLocation *smlSessionGetSource(SmlSession *session);
00076 SmlLocation *smlSessionGetTarget(SmlSession *session);
00077
00078
00079
00080 void smlSessionRegisterCred(SmlSession *session, SmlCred *cred);
00081
00082
00083 SmlBool smlSessionReceiveHeader(SmlSession *session, SmlHeader *header, SmlError **error);
00084 SmlBool smlSessionReceiveBody(SmlSession *session, SmlParser *parser, SmlError **error);
00085
00086
00087 SmlBool smlSessionSendCommand(SmlSession *session, SmlCommand *cmd, SmlCommand *parent, SmlStatusReplyCb callback, void *userdata, SmlError **error);
00088 SmlBool smlSessionStartCommand(SmlSession *session, SmlCommand *cmd, SmlCommand *parent, SmlStatusReplyCb callback, void *userdata, SmlError **error);
00089 SmlBool smlSessionEndCommand(SmlSession *session, SmlCommand *parent, SmlError **error);
00090 SmlBool smlSessionSendReply(SmlSession *session, SmlStatus *status, SmlError **error);
00091
00092 SmlBool smlSessionCheck(SmlSession *session);
00093 void smlSessionDispatch(SmlSession *session);
00094
00095
00096 void smlSessionSetSendingLimit(SmlSession *session, unsigned int limit) LIBSYNCML_DEPRECATED;
00097 void smlSessionSetReceivingLimit(SmlSession *session, unsigned int limit) LIBSYNCML_DEPRECATED;
00098 unsigned int smlSessionGetSendingLimit(SmlSession *session) LIBSYNCML_DEPRECATED;
00099
00100
00101 void smlSessionSetSendingMaxMsgSize(SmlSession *session, unsigned int size) LIBSYNCML_DEPRECATED;
00102 void smlSessionSetReceivingMaxMsgSize(SmlSession *session, unsigned int size) LIBSYNCML_DEPRECATED;
00103 unsigned int smlSessionGetSendingMaxMsgSize(SmlSession *session) LIBSYNCML_DEPRECATED;
00104
00105
00106 void smlSessionSetSendingMaxObjSize(SmlSession *session, int limit) LIBSYNCML_DEPRECATED;
00107 void smlSessionSetRequestedMaxObjSize(SmlSession *session, int limit) LIBSYNCML_DEPRECATED;
00108 int smlSessionGetSendingMaxObjSize(SmlSession *session) LIBSYNCML_DEPRECATED;
00109 void smlSessionSetReceivingMaxObjSize(SmlSession *session, unsigned int limit) LIBSYNCML_DEPRECATED;
00110 unsigned int smlSessionGetReceivingMaxObjSize(SmlSession *session) LIBSYNCML_DEPRECATED;
00111
00112 #endif //_SML_SESSION_H_