00001 00020 #ifndef ARXX_DATACHANNEL_H 00021 #define ARXX_DATACHANNEL_H 00022 00023 #include "Buffer.h" 00024 #include "Common.h" 00025 #include "FetchStatus.h" 00026 #include "URI.h" 00027 00034 namespace Arxx 00035 { 00045 class DataChannel 00046 { 00047 public: 00056 DataChannel(const Arxx::URI & URI); 00057 00063 virtual ~DataChannel(void); 00064 00070 void vReference(void); 00071 00077 void vDereference(void); 00078 00084 bool bIsReferenced(void) const; 00085 00089 const Arxx::URI & GetURI(void) const; 00090 00100 virtual bool bFetchData(const Arxx::URI & URI, Arxx::Buffer & Buffer, Arxx::FetchStatus & FetchStatus) = 0; 00101 00106 bool bWantsAutoDeletion(void) const; 00107 protected: 00113 virtual void vOnUnreferenced(void); 00114 00122 bool m_bWantsAutoDeletion; 00123 private: 00127 DataChannel(const Arxx::DataChannel & DataChannel); 00128 00132 Arxx::DataChannel & operator=(const Arxx::DataChannel & DataChannel); 00133 00139 Arxx::u4byte m_u4ReferenceCounter; 00140 00144 const Arxx::URI m_URI; 00145 }; 00146 } 00147 00148 #endif