// ----------------------------------------------------------------------- // Microsoft Distributed Transaction Coordinator (Microsoft Confidential) // Copyright 1994 - 1995 Microsoft Corporation. All Rights Reserved. // @doc // @module CILGWRTA.H | Header for interface implementation . // @rev 0 | 06/02/95 | rbarnes | Cloned: For LOGMGR.DLL // ----------------------------------------------------------------------- #ifndef _CILGWRTA_H # define _CILGWRTA_H // =============================== // INCLUDES: // =============================== #ifdef WIN32 // OLE inclusions: # include #else # include # include #endif WIN32 #include "ilgwrta.h" // ILogWriteAsynch. // =============================== // DECLARATIONS: // =============================== class CLogStream; // Core class forward declaration. class CLogMgr; class CLogAppendNotice { public: LRP lrpLRP; CAsynchSupport* pCAsynchSupport; BOOL fInUse; #ifdef _DEBUG DWORD m_dwNumFlushes; // for catching delayed notifications #endif _DEBUG }; // =============================== // CLASS: CILogWriteAsynch: // =============================== // ----------------------------------------------------------------------- // @class CILogWriteAsynch | Interface implementation of for // core class . // Threading: Thread-safe. // Platforms: Win. // Includes : None. // Ref count: Delegated. // Hungarian: CILogWriteAsynch. // Description: // This is a template for an interface implementation. // Usage: // This is only a template. You get to say how your instance gets used. // ----------------------------------------------------------------------- class CILogWriteAsynch: public ILogWriteAsynch // @base public | ILogWriteAsynch. { friend class CLogStream; friend class CLogMgr; public: // ------------------------------- @access Samsara (public): CILogWriteAsynch (CLogStream FAR* i_pCLogStream, CLogMgr FAR* pCLogMgr); // @cmember . public: // ------------------------------- @access IUnknown (public): virtual STDMETHODIMP QueryInterface (REFIID i_iid, LPVOID FAR* o_ppv); // @cmember . virtual STDMETHODIMP_ (ULONG) AddRef (void); // @cmember . virtual STDMETHODIMP_ (ULONG) Release (void); // @cmember . public: // ------------------------------- @access ILogWriteAsynch (public): virtual STDMETHODIMP Init (ULONG cbMaxOutstandingWrites); virtual STDMETHODIMP AppendAsynch (LOGREC* plgrLogRecord, LRP* plrpLRP, CAsynchSupport* pCAsynchSupport,BOOL fFlushHint,ULONG* pulAvailableSpace); virtual STDMETHODIMP SetCheckpoint (LRP lrpLatestCheckpoint,CAsynchSupport* pCAsynchSupport, LRP* plrpCheckpointLogged); private: // ------------------------------- @access Backpointers (private): CLogStream FAR* m_pCLogStream; // @cmember core object pointer CLogMgr FAR* m_pCLogMgr; // @cmember Core logstorage object pointer. IUnknown* m_pIUOuter; // @cmember Outer IUnknown pointer. private: // ------------------------------- @access Private data (private): CSemExclusive m_cmxsWriteAsynch; //@cmember The write lock that must be held // to manipulate the AppendNotify lists ULONG m_cbMaxOutstanding; // @cmember Max limit of outstanding appends ULONG m_cbFlushHints; // @cmember current count of flush hints CLogAppendNotice * m_rgCLogAppendNotices; ULONG m_ulListHead; ULONG m_ulListEnd; BOOL m_fListEmpty; }; #endif _CILGWRTA_H