/*++ © 1998 Seagate Software, Inc. All rights reserved. Module Name: fsaprem.h Abstract: Header file for the premigrated list classes. Author: Ron White [ronw] 18-Feb-1997 Revision History: --*/ #ifndef _FSAPREM_ #define _FSAPREM_ #include "resource.h" // main symbols #include "wsbdb.h" #include "fsa.h" #include "fsaprv.h" #define PREMIGRATED_REC_TYPE 1 #define PREMIGRATED_BAGID_OFFSETS_KEY_TYPE 1 #define PREMIGRATED_ACCESS_TIME_KEY_TYPE 2 #define PREMIGRATED_SIZE_KEY_TYPE 3 #define RECOVERY_REC_TYPE 2 #define RECOVERY_KEY_TYPE 1 #define RECOVERY_KEY_SIZE (IDB_MAX_KEY_SIZE - 1) // This may be problem if longer path names are used: #define PREMIGRATED_MAX_PATH_SIZE 65536 ///////////////////////////////////////////////////////////////////////////// // CFsaPremigratedDb class CFsaPremigratedDb : public IFsaPremigratedDb, public CWsbDb, public CComCoClass { public: CFsaPremigratedDb() {} BEGIN_COM_MAP(CFsaPremigratedDb) COM_INTERFACE_ENTRY(IFsaPremigratedDb) COM_INTERFACE_ENTRY2(IWsbDb, IFsaPremigratedDb) COM_INTERFACE_ENTRY(IWsbDbPriv) COM_INTERFACE_ENTRY(IPersistStream) END_COM_MAP() //DECLARE_NO_REGISTRY() DECLARE_REGISTRY_RESOURCEID(IDR_FsaPremigratedDb) DECLARE_PROTECT_FINAL_CONSTRUCT(); // IWsbDb WSB_FROM_CWSBDB; // IPersist public: STDMETHOD(GetClassID)(LPCLSID pclsid); // IPersistStream public: STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pSize) { return(CWsbDb::GetSizeMax(pSize)); } STDMETHOD(Load)(IStream* pStream); STDMETHOD(Save)(IStream* pStream, BOOL clearDirty); // IFsaPremigrated public: STDMETHOD(FinalConstruct)(void); STDMETHOD(FinalRelease)(void); STDMETHOD(Init)(OLECHAR* name, IWsbDbSys* pDbSys, BOOL* pCreated); private: }; ///////////////////////////////////////////////////////////////////////////// // CFsaPremigratedRec class CFsaPremigratedRec : public CWsbDbEntity, public IFsaPremigratedRec, public CComCoClass { public: CFsaPremigratedRec() {} BEGIN_COM_MAP(CFsaPremigratedRec) COM_INTERFACE_ENTRY(IFsaPremigratedRec) COM_INTERFACE_ENTRY2(IWsbDbEntity, CWsbDbEntity) COM_INTERFACE_ENTRY(IWsbDbEntityPriv) COM_INTERFACE_ENTRY(IPersistStream) COM_INTERFACE_ENTRY(IWsbCollectable) END_COM_MAP() //DECLARE_NO_REGISTRY() DECLARE_REGISTRY_RESOURCEID(IDR_FsaPremigratedRec) // IFsaPremigratedRec public: STDMETHOD(FinalConstruct)(void); STDMETHOD(FinalRelease)(void); // IPersist public: STDMETHOD(GetClassID)(LPCLSID pClsid); // IPersistStream public: STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pSize); STDMETHOD(Load)(IStream* pStream); STDMETHOD(Save)(IStream* pStream, BOOL clearDirty); // IWsbDbEntity public: STDMETHOD(Print)(IStream* pStream); STDMETHOD(UpdateKey)(IWsbDbKey *pKey); WSB_FROM_CWSBDBENTITY; // IWsbTestable STDMETHOD(Test)(USHORT* /*passed*/, USHORT* /*failed*/) { return(E_NOTIMPL); } // IFsaPremigratedRec public: STDMETHOD(GetAccessTime)(FILETIME* pAccessTime); STDMETHOD(GetBagId)(GUID* pId); STDMETHOD(GetBagOffset)(LONGLONG* pOffset); STDMETHOD(GetFileId)(LONGLONG* pFileId); STDMETHOD(GetFileUSN)(LONGLONG* pFileUSN); STDMETHOD(GetOffset)(LONGLONG* pOffset); STDMETHOD(GetPath)(OLECHAR** ppPath, ULONG bufferSize); STDMETHOD(GetRecallTime)(FILETIME* pTime); STDMETHOD(GetSize)(LONGLONG* pSize); STDMETHOD(IsWaitingForClose)(void); STDMETHOD(SetAccessTime)(FILETIME AccessTime); STDMETHOD(SetBagId)(GUID id); STDMETHOD(SetBagOffset)(LONGLONG offset); STDMETHOD(SetFileId)(LONGLONG FileId); STDMETHOD(SetFileUSN)(LONGLONG FileUSN); STDMETHOD(SetFromScanItem)(IFsaScanItem* pScanItem, LONGLONG offset, LONGLONG size, BOOL isWaitingForClose); STDMETHOD(SetIsWaitingForClose)(BOOL isWaiting); STDMETHOD(SetOffset)(LONGLONG offset); STDMETHOD(SetPath)(OLECHAR* pPath); STDMETHOD(SetRecallTime)(FILETIME Time); STDMETHOD(SetSize)(LONGLONG Size); private: FILETIME m_AccessTime; GUID m_BagId; LONGLONG m_BagOffset; // fileStart in the placeholder LONGLONG m_FileId; BOOL m_IsWaitingForClose; LONGLONG m_Offset; // dataStreamStart in the placeholder CWsbStringPtr m_Path; FILETIME m_RecallTime; LONGLONG m_Size; LONGLONG m_FileUSN; // USN Journal number }; #endif // _FSAPREM_