#pragma once #include "SpTransactionContext.h" #include "sp_ses.h" #include "sp_mod.h" class SpServerSessionFunction : public IServerSessionFunction { public: SpServerSessionFunction(SpEntity *pEntity, CServerSessionBase *pServerSessionBase, int remote_epid, int remote_svc_id, int conn_id); virtual ~SpServerSessionFunction(); ErrorCodeEnum Begin(); virtual const char *GetRemoteEntityName(); virtual SessionStateEnum GetCurrentState(); virtual ErrorCodeEnum CloseSession(); static int __get_method_attr(sp_ses_uas_t *uas, int method_id, int method_sig, int *overlap, void *user_data); static void __on_req(sp_ses_uas_t *uas, int tsx_id, int method_id, int method_sig, int timeout, iobuffer_t **req_pkt, void *user_data); static void __on_info(sp_ses_uas_t *uas, int method_id, int method_sig, iobuffer_t **info_pkt, void *user_data); static void __on_close(sp_ses_uas_t *uas, int error, void *user_data); static void __on_destroy(sp_ses_uas_t *uas, void *user_data); int get_method_attr(int method_id, int method_sig, int *overlap); void on_req(int tsx_id, int method_id, int method_sig, int timeout, iobuffer_t **req_pkt); void on_info(int method_id, int method_sig, iobuffer_t **info_pkt); void on_close(int error); void on_destroy(); private: CServerSessionBase *m_pServerSessionBase; sp_ses_uas_t *m_uas; sp_entity_t *m_remote_ent; };