#ifndef __STREAMMX_H_ #define __STREAMMX_H_ #include #include //struct IRAPIStream; typedef std::map str2int_map; class streammx { str2int_map _mth2id; IRAPIStream *_stream; DWORD _apiversion; public: streammx(IRAPIStream *stream); ~streammx(); HRESULT invoke(const std::string& methodname, DWORD insize, BYTE *inbuf, DWORD *poutsize, BYTE **outbuf); DWORD getversion(); void sendversion(DWORD version); #ifdef _WIN32_WCE void service(); #endif bool eof(); private: void deletestream(); void writedata(const void *p, size_t n); void readdata(void *p, size_t n); void writedword(DWORD dw); DWORD readdword(); }; typedef boost::shared_ptr streammx_ptr; #endif