#ifndef MMFMGR_H #define MMFMGR_H ///////////////////////////////////////////////////////////////////////// // MMFmgr.h - Provides management of shared memory for IPC // // // // Jim Fawcett, CSE775 - Distributed Objects, MT1-Q4, Spring 2009 // ///////////////////////////////////////////////////////////////////////// #include #include #include class RWToggle { public: RWToggle(std::wstring name); ~RWToggle(); void setRead(); void setWrite(); void readWait(); void writeWait(); bool isReadyForReading(); bool isReadyForWriting(); void writerLock(); void writerUnlock(); private: HANDLE hRead_; HANDLE hWrite_; HANDLE hWritersLock_; bool readReady; std::wstring name_; }; typedef char* Block; class MMFmgr { public: MMFmgr(const std::wstring& name, size_t size); ~MMFmgr(); void putBlock(Block blk); Block getBlock(); void putString(const std::wstring& str); std::wstring getString(); void clear(); private: size_t size_; HANDLE hMMF_; wchar_t* pMMF_; RWToggle rwt_; }; #endif