/*++ © 1998 Seagate Software, Inc. All rights reserved Module Name: RmsLibry.h Abstract: Declaration of the CRmsLibrary class Author: Brian Dodd [brian] 15-Nov-1996 Revision History: --*/ #ifndef _RMSLIBRY_ #define _RMSLIBRY_ #include "resource.h" // resource symbols #include "RmsObjct.h" // CRmsComObject /*++ Class Name: CRmsLibrary Class Description: A CRmsLibrary represents the multi-device complex that includes: zero or more medium changers, zero or more drive classes, zero or more drives, zero or more storage slots, zero or more staging slots, zero or more I/E ports, zero or more cleaning cartridges, zero or more scratch cartridges, zero or more media sets. But, at least one. --*/ class CRmsLibrary : public CComDualImpl, public CRmsComObject, public CWsbObject, // inherits CComObjectRoot public CComCoClass { public: CRmsLibrary() {} BEGIN_COM_MAP(CRmsLibrary) COM_INTERFACE_ENTRY2(IDispatch, IRmsLibrary) COM_INTERFACE_ENTRY(IRmsLibrary) COM_INTERFACE_ENTRY(IRmsComObject) COM_INTERFACE_ENTRY(ISupportErrorInfo) COM_INTERFACE_ENTRY2(IPersist, IPersistStream) COM_INTERFACE_ENTRY(IPersistStream) COM_INTERFACE_ENTRY(IWsbCollectable) COM_INTERFACE_ENTRY(IWsbPersistStream) COM_INTERFACE_ENTRY(IWsbTestable) END_COM_MAP() DECLARE_REGISTRY_RESOURCEID(IDR_RmsLibrary) // CComObjectRoot public: STDMETHOD(FinalConstruct)(void); // IPersist public: STDMETHOD(GetClassID)(CLSID *pClsid); // IPersistStream public: STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pSize); STDMETHOD(Load)(IStream* pStream); STDMETHOD(Save)(IStream* pStream, BOOL clearDirty); // IWsbCollectable public: STDMETHOD(CompareTo)(IUnknown* pCollectable, SHORT* pResult); WSB_FROM_CWSBOBJECT; // IWsbTestable public: STDMETHOD(Test)(USHORT *pPassed, USHORT *pFailed); // IRmsLibrary public: STDMETHOD(GetLibraryId)(GUID *pLibraryId); STDMETHOD(SetLibraryId)(GUID libraryId); STDMETHOD( GetName )( BSTR *pName ); STDMETHOD( SetName )( BSTR name ); STDMETHOD(GetMediaSupported)(LONG *pType); STDMETHOD(SetMediaSupported)(LONG type); STDMETHOD(GetMaxChangers)(LONG *pNum); STDMETHOD(SetMaxChangers)(LONG num); STDMETHOD(GetMaxDrives)(LONG *pNum); STDMETHOD(SetMaxDrives)(LONG num); STDMETHOD(GetMaxPorts)(LONG *pNum); STDMETHOD(SetMaxPorts)(LONG num); STDMETHOD(GetMaxSlots)(LONG *pNum); STDMETHOD(SetMaxSlots)(LONG num); STDMETHOD(GetNumUsedSlots)(LONG *pNum); STDMETHOD(GetNumStagingSlots)(LONG *pNum); STDMETHOD(SetNumStagingSlots)(LONG num); STDMETHOD(GetNumScratchCarts)(LONG *pNum); STDMETHOD(SetNumScratchCarts)(LONG num); STDMETHOD(GetNumUnknownCarts)(LONG *pNum); STDMETHOD(SetNumUnknownCarts)(LONG num); STDMETHOD(SetIsMagazineSupported)(BOOL flag); STDMETHOD(IsMagazineSupported)(void); STDMETHOD(GetMaxCleaningMounts)(LONG *pNum); STDMETHOD(SetMaxCleaningMounts)(LONG num); STDMETHOD(GetSlotSelectionPolicy)(LONG *pNum); STDMETHOD(SetSlotSelectionPolicy)(LONG num); STDMETHOD(GetChangers)(IWsbIndexedCollection **ptr); STDMETHOD(GetDriveClasses)(IWsbIndexedCollection **ptr); STDMETHOD(GetDrives)(IWsbIndexedCollection **ptr); STDMETHOD(GetStorageSlots)(IWsbIndexedCollection **ptr); STDMETHOD(GetStagingSlots)(IWsbIndexedCollection **ptr); STDMETHOD(GetPorts)(IWsbIndexedCollection **ptr); STDMETHOD(GetCleaningCartridges)(IWsbIndexedCollection **ptr); STDMETHOD(GetScratchCartridges)(IWsbIndexedCollection **ptr); STDMETHOD(GetMediaSets)(IWsbIndexedCollection **ptr); STDMETHOD( Audit )( LONG start, LONG count, BOOL verify, BOOL unknownOnly, BOOL mountWait, LPOVERLAPPED pOverlapped, LONG *pRequest ); protected: enum { // Class specific constants: // Version = 1, // Class version, this should be // incremented each time the // the class definition changes. }; // RmsMedia m_mediaSupported; // The type of media supported by a // a Drive, usually one type, but // can be a combination of media // types for multi-function devices // (i.e. drives that support Optical, // WORM, and CDR). LONG m_maxChangers; // The total number of medium changers contained // within the Library. LONG m_maxDrives; // The total number of drives contained // within the Library. LONG m_maxPorts; // The total number of I/E ports contained // within the Library. LONG m_maxSlots; // The total number of storage slots // contained within the library. LONG m_NumUsedSlots; // The number of occupied storage slots. LONG m_NumStagingSlots; // The number of slots used for staging area. LONG m_NumScratchCarts; // The amount of scratch media available. LONG m_NumUnknownCarts; // The number of units of media // having unknown status. BOOL m_isMagazineSupported; // If TRUE, the library supports magazines. LONG m_maxCleaningMounts; // The max number of mounts per cleaning // cartridge. RmsSlotSelect m_slotSelectionPolicy; // The storage slot selection policy // to use (see RmsSlotSelect). CComPtr m_pChangers; // The changers associates with the Library. CComPtr m_pDriveClasses; // The drive classes associates with the Library. CComPtr m_pDrives; // The drives associates with the Library. CComPtr m_pStorageSlots; // The storage slots associates with the Library. CComPtr m_pStagingSlots; // The staging slots associates with the Library. CComPtr m_pPorts; // The I/E ports associated with the Library. CComPtr m_pCleaningCartridges; // The cleaning cartridges associated with the Library. CComPtr m_pScratchCartridges; // The scratch cartridges associated with the Library. CComPtr m_pMediaSets; // The media sets associated with the Library. }; #endif // _RMSLIBRY_