00001 00020 #ifndef ARXX_DATAREPOSITORY_H 00021 #define ARXX_DATAREPOSITORY_H 00022 00023 #include <map> 00024 00025 #include "FetchStatus.h" 00026 00033 namespace Arxx 00034 { 00035 class Buffer; 00036 00037 class DataChannel; 00038 00039 class URI; 00040 00054 class DataRepository 00055 { 00056 public: 00060 DataRepository(void); 00061 00065 bool bRegisterDataChannel(Arxx::DataChannel * pDataChannel); 00066 00070 bool bUnregisterDataChannel(Arxx::DataChannel * pDataChannel); 00071 00079 bool bFetchData(const Arxx::URI & URI, Arxx::Buffer & Buffer, Arxx::FetchStatus & FetchStatus); 00080 00084 void vReferenceDataChannel(const Arxx::URI & URI); 00085 00089 void vDereferenceDataChannel(const Arxx::URI & URI); 00090 00097 bool bHasDataChannel(const Arxx::URI & URI); 00098 00104 const Arxx::DataChannel * pGetDataChannel(const Arxx::URI & URI); 00105 private: 00110 std::map< Arxx::URI, Arxx::DataChannel * >::iterator iGetDataChannel(const Arxx::URI & URI); 00111 00115 std::map< Arxx::URI, Arxx::DataChannel * > m_DataChannels; 00116 }; 00117 00118 extern DataRepository Repository; 00119 } 00120 00121 #endif