⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syncsession.h

📁 pimserver是syncml_vc开发包的服务器实例
💻 H
字号:
// SyncSession.h: interface for the CSyncSession class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SYNCSESSION_H__0D61FF3C_ED9E_464C_A3B8_6F80A7EBA851__INCLUDED_)
#define AFX_SYNCSESSION_H__0D61FF3C_ED9E_464C_A3B8_6F80A7EBA851__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "..\\inc\\define.h"
#include "..\\inc\\syncml_tk_prefix_file.h"
#include "..\\inc\\xpttransport.h"
#include "..\\inc\\sml.h"
#include "..\\inc\\smldef.h"
#include "..\\inc\\smldtd.h"
#include "..\\inc\\wbxml.h"
#include "..\\inc\\xpt.h"




typedef struct PcdataList_s
{
   	char *  data;
	struct PcdataList_s *next;
} PcdataList_s;

typedef struct CmdDevInfExt_s
{
	char *  xnam;
	struct PcdataList_s *xval;
}CmdDevInfExt_s;

typedef struct CmdDevInfExtList_s {
    CmdDevInfExt_s*   data;
    struct CmdDevInfExtList_s *next;
} CmdDevInfExtList_s;



typedef struct CmdDevInfSyncCap_s {
    PcdataList_s*  synctype;
} CmdDevInfSyncCap_s;




typedef struct CmdDevInfCTData_s {
    char*  name;
    char*  dname; /* optional, display name */

    PcdataList_s*  valenum;
    char*  datatype;
    char*  size;
} CmdDevInfCTData_s;

typedef struct CmdDevInfCTDataList_s {
    CmdDevInfCTData_s*       data;
    struct CmdDevInfCTDataList_s *next;
} CmdDevInfCTDataList_s;

typedef struct CmdDevInfCTDataProp_s {
    CmdDevInfCTData_s*    prop;
    CmdDevInfCTDataList_s* param;
} CmdDevInfCTDataProp_s;

typedef struct CmdDevInfCTDataPropList_s {
    CmdDevInfCTDataProp_s*    data;
    struct CmdDevInfCTDataPropList_s *next;
} CmdDevInfCTDataPropList_s;

typedef struct CmdDevInfCTCap_s {
    char*                cttype;
    CmdDevInfCTDataPropList_s*  prop; 
} CmdDevInfCTCap_s;

typedef struct CmdDevInfCTCapList_s {
    CmdDevInfCTCap_s* data;
    struct CmdDevInfCTCapList_s *next;
} CmdDevInfCTCapList_s;


typedef struct CmdDevInfDSMem_s {
    Flag_t  flags; /* %%% luz:2003-04-28, mad flag, was PCData (completely wrong) */
    char*  maxmem; /* optional */
    char*  maxid;  /* optional */
} CmdDevInfDSMem_s;


typedef struct CmdDevInfXmit_s {
    char*  cttype;
    char*  verct;
} CmdDevInfXmit_s;

typedef struct CmdDevInfXmitList_s {
    CmdDevInfXmit_s*      data;
    struct CmdDevInfXmitList_s  *next;
} CmdDevInfXmitList_s;

typedef struct CmdDevInfDataStore_s {
    char*          sourceref;
    char*           displayname;   /* optional */
    char*           maxguidsize;   /* optional */
    CmdDevInfXmit_s*      rxpref;
    CmdDevInfXmitList_s*  rx;            /* optional */
    CmdDevInfXmit_s*      txpref;
    CmdDevInfXmitList_s*  tx;            /* optional */
    CmdDevInfDSMem_s*     dsmem;         /* optional */
    CmdDevInfSyncCap_s*   synccap;
} CmdDevInfDataStore_s;


typedef struct CmdDevInfDataStoreList_s {
    CmdDevInfDataStore_s* data;
    struct CmdDevInfDataStoreList_s *next;
} CmdDevInfDataStoreList_s;

typedef struct CmdDevInfDevInf_s {
  char*      verdtd;
  char*      man; /* optional */
  char*      mod; /* optional */
  char*      oem; /* optional */
  char*      fwv; /* optional */
  char*      swv; /* optional */
  char*      hwv; /* optional */
  char*      devid;
  char*      devtyp;
  CmdDevInfDataStoreList_s* datastore;
  CmdDevInfCTCapList_s*     ctcap;
  CmdDevInfExtList_s*       ext;
	/* SCTSTK - 18/03/2002, S.H. 2002-04-05 : SyncML 1.1 */
	Flag_t				flags;
} CmdDevInfDevInf_s;

typedef struct MetInf_s
{
   	char *  format;
	char *  type;
	char *  mark;
	char *  size;
	char *  nextnonce;
	char *  version;
	char *  maxmsgsize;
	char *  maxobjsize;
	char *  mem_shared;
	char *  mem_free;
	char *  mem_freeid;
	PcdataList_s* emi;
	char *  anchor_last;
	char *  anchor_next;

} MetInf_s;
typedef struct CmdItem_s
{
	char *	target_locURI;
	char *  target_locName;
	char *	source_locURI;
	char *  source_locName;
	MetInf_s * meta;
	SmlPcdataType_t       data_contentType;   // The type of data which a PCDATA structure contains
	SmlPcdataExtension_t  data_extension;     // PCData Extension type
//	MemSize_t             data_length;        // length of the data in this PCDATA structure
	VoidPtr_t             data;       // Pointer to the data itself
	int		flags;
}CmdItem_s;

typedef struct CmdItemList_s
{
	CmdItem_s* item;
	struct CmdItemList_s* next;
}CmdItemList_s;

typedef struct CmdMapItem_s {
  	char *	target_locURI;
	char *  target_locName;
	char *	source_locURI;
	char *  source_locName;
} CmdMapItem_s;


typedef struct CmdMapItemList_s {
  CmdMapItem_s			* mapItem;
  struct CmdMapItemList_s  * next;
} CmdMapItemList_s;


typedef struct CmdGet_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * cmdID;    /**< Next Element */  
    int	flags;
	char * lang;
	char * cred_meta;
	char * cred_data;
	MetInf_s * meta;
	CmdItemList_s *itemList;
} CmdGet_s, CmdPut_s;

typedef struct CmdAdd_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * cmdID;    /**< Next Element */  
    int	flags;
	char * cred_meta;
	char * cred_data;
	MetInf_s * meta;
	CmdItemList_s *itemList;
} CmdAdd_s,CmdCopy_s,CmdReplace_s,CmdGeneric_s;
typedef struct CmdAlert_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * cmdID;    /**< Next Element */  
    int	flags;
	char * cred_meta;
	char * cred_data;
	char * data;
	CmdItemList_s *itemList;
} CmdAlert_s;
typedef struct CmdExec_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * cmdID;    /**< Next Element */  
    int	flags;
	char * cred_meta;
	char * cred_data;
	char * meta;
	CmdItem_s *item;
} CmdExec_s;

typedef struct CmdMap_s {
  SmlProtoElement_t	      elementType; // InternalToolkit Field
    char *        cmdID;   
	char *	target_locURI;
	char *  target_locName;
	char *	source_locURI;
	char *  source_locName;
	char *  cred_meta;
	char *  cred_data;
 	MetInf_s *  meta;
  CmdMapItemList_s *     mapItemList;
} CmdMap_t;

typedef struct CmdSearch_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * cmdID;    /**< Next Element */  
    int	flags;
	char * cred_meta;
	char * cred_data;
} CmdSearch_s;

typedef struct CmdSync_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * cmdID;    /**< Next Element */  
   	char *	target_locURI;
	char *  target_locName;
	char *	source_locURI;
	char *  source_locName;
	char *  numberofchange;
	MetInf_s * meta;

} CmdSync_s;

typedef struct CmdResult_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * cmdID;    /**< Next Element */  
    char * msgRef;
	char * cmdRef;
	MetInf_s * meta;
	//char * meta;
	char * targetRef;
	char * sourceRef;
	CmdItemList_s *itemList;
} CmdResult_s;


typedef struct CmdTargetRefList_s {
  char*              targetRef;
  struct CmdTargetRefList_s    *next;
} CmdTargetRefList_s;
typedef struct CmdSourceRefList_s {
  char*              sourceRef;
  struct CmdSourceRefList_s    *next;
} CmdSourceRefList_s;

typedef struct CmdStatus_s
{

  SmlProtoElement_t	      elementType; // Internal Toolkit Field
  char*        cmdID;          
  char*        msgRef; // Opt.
  char*        cmdRef;
  char*        cmd;
  CmdTargetRefList_s* targetRefList;  // opt.
  CmdSourceRefList_s* sourceRefList;  // opt.
  //SmlCredPtr_t          cred;           // opt.
  //SmlChalPtr_t          chal;           // opt.
  char*        data;
  CmdItemList_s *itemList;

} CmdStatus_s;

typedef struct CmdSyncHdr_s
{
    SmlProtoElement_t elementType;                    /**< Element item */
    char * version;    /**< Next Element */  
    char * proto;
	char * sessionID;
	char * msgID;
	int flags;
	char * target_locURI;
	char * target_locName;
	char * source_locURI;
	char * source_locName;
	char * respURI;
	MetInf_s * cred_meta;
	//char *  cred_meta;
	char *  cred_data;
	MetInf_s * meta;
} CmdSyncHdr_s;
typedef struct SessionCmdItem_t
{
    SmlProtoElement_t ItemType;                 
    void * CmdItem; 
	struct SessionCmdItem_t * next;
} SessionCmdItem_t;
   
typedef enum CredState { Cred_NoOffer =1,Cred_Offer ,Cred_Failed,Cred_Success,Cred_Ok} CredState;
typedef enum SyncState { Sync_NoSync =1,Sync_ClientSyncStart ,Sync_ClientSyncOK,Sync_ServerStart,Sync_ServerSyncOK} SyncState;

class CSyncSession  
{
public:
	CSyncSession();
	virtual ~CSyncSession();
	void DebugCmdItem();
	
	void InsertCmdItem(SmlProtoElement_t ItemType,void *CmdItem);
	void HandleStartMessage(InstanceID_t id,CmdSyncHdr_s*pTHdr);
	void HandleAlert(InstanceID_t id,	CmdAlert_s* pAlert,CmdSyncHdr_s* pSyncHdr);
	void HandlePut(InstanceID_t id,	CmdPut_s* pPut,CmdSyncHdr_s* pSyncHdr);
	void HandleSyncStart(InstanceID_t id,	CmdSync_s* pSync,CmdSyncHdr_s* pSyncHdr);
	void HandleGet(InstanceID_t id,CmdGet_s* pGet,CmdSyncHdr_s* pSyncHdr);
	void HandleAdd(InstanceID_t id,	CmdAdd_s* pAdd,CmdSyncHdr_s* pSyncHdr);
	void HandleReplace(InstanceID_t id,CmdReplace_s* pReplace,CmdSyncHdr_s*pSyncHdr);
	void HandleMap(InstanceID_t id,CmdMap_s* pMap,CmdSyncHdr_s*pSyncHdr);
	void HandleStatus(InstanceID_t id,CmdStatus_s* pStatus ,CmdSyncHdr_s*pSyncHdr);
	void HandleFinal(InstanceID_t id,	Boolean_t*pfinal,CmdSyncHdr_s* pSyncHdr) ;
	String_t			m_sLast;
	String_t			m_sNext;
	String_t			m_sSessID;
	String_t			m_sUser;
	String_t			m_sPwd;
	String_t			m_sClientAnchor;
	String_t			m_sServerAnchor;
	String_t			m_sTargetLocURI;
	String_t			m_sSourceLocURI;
	int					m_nSyncType;
	int				    m_nCmdID;//自增
	int					m_nMaxMsgSize;
	SessionCmdItem_t*   m_pHead;
	SessionCmdItem_t*   m_pEnd;
	CredState			m_eCredState;
	int					m_nAddID;
	int					m_nServerNoc;
	SyncState			m_eClientState;//客户端是否同步结束?
	SyncState			m_eServerState;//客户端是否同步结束?
	int					m_nClientSend222;//客户端发送的了222
//	int					m_nSyncFinish;//0未在同步处理中1同步开始 2 同步结束

};

#endif // !defined(AFX_SYNCSESSION_H__0D61FF3C_ED9E_464C_A3B8_6F80A7EBA851__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -