00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 #ifndef COH_ABSTRACT_READ_BUFFER_HPP
00017 #define COH_ABSTRACT_READ_BUFFER_HPP
00018 
00019 #include "coherence/lang.ns"
00020 
00021 #include "coherence/io/ReadBuffer.hpp"
00022 
00023 COH_OPEN_NAMESPACE2(coherence,io)
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 class COH_EXPORT AbstractReadBuffer
00032     : public abstract_spec<AbstractReadBuffer,
00033         extends<Object>,
00034         implements<ReadBuffer> >
00035     {
00036     
00037 
00038     public:
00039         typedef this_spec::Handle Handle;
00040         typedef this_spec::View   View;
00041         typedef this_spec::Holder Holder;
00042 
00043 
00044     
00045 
00046     public:
00047 
00048 
00049 
00050         virtual BufferInput::Handle getBufferInput() const;
00051 
00052 
00053 
00054 
00055         virtual ReadBuffer::View getReadBuffer(size32_t of, size32_t cb) const;
00056 
00057 
00058 
00059 
00060         virtual Array<octet_t>::View toOctetArray() const;
00061 
00062 
00063 
00064 
00065         virtual Array<octet_t>::View toOctetArray(size32_t of, size32_t cb) const;
00066 
00067 
00068     
00069 
00070     public:
00071 
00072 
00073 
00074         virtual bool equals(Object::View v) const;
00075 
00076 
00077     
00078 
00079     protected:
00080 
00081 
00082 
00083 
00084 
00085 
00086 
00087 
00088 
00089 
00090         virtual ReadBuffer::View instantiateReadBuffer(size32_t of,
00091                 size32_t cb) const = 0;
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099         virtual BufferInput::Handle instantiateBufferInput() const;
00100 
00101 
00102 
00103 
00104 
00105 
00106 
00107 
00108 
00109 
00110         virtual void checkBounds(size32_t of, size32_t cb) const;
00111 
00112 
00113     
00114 
00115     public:
00116 
00117 
00118 
00119 
00120 
00121 
00122         class COH_EXPORT AbstractBufferInput
00123             : public class_spec<AbstractBufferInput,
00124                 extends<Object>,
00125                 implements<BufferInput> >
00126             {
00127             friend class factory<AbstractBufferInput>;
00128 
00129             
00130 
00131             protected:
00132 
00133 
00134 
00135 
00136 
00137 
00138                 AbstractBufferInput(AbstractReadBuffer::View vBuf);
00139 
00140 
00141             
00142 
00143             public:
00144 
00145 
00146 
00147                 virtual ReadBuffer::View getBuffer() const;
00148 
00149 
00150 
00151 
00152                 virtual size32_t getOffset() const;
00153 
00154 
00155 
00156 
00157                 virtual void setOffset(size32_t of);
00158 
00159 
00160 
00161 
00162                 virtual size32_t available() const;
00163 
00164 
00165 
00166 
00167                 virtual void skip(size32_t cb);
00168 
00169 
00170 
00171 
00172                 virtual octet_t read();
00173 
00174 
00175 
00176 
00177                 virtual void read(Array<octet_t>::Handle hab);
00178 
00179 
00180 
00181 
00182                 virtual void read(Array<octet_t>::Handle hab, size32_t of,
00183                         size32_t cb);
00184 
00185 
00186 
00187 
00188                 virtual ReadBuffer::View readBuffer(size32_t cb);
00189 
00190 
00191 
00192 
00193                 virtual bool readBoolean();
00194 
00195 
00196 
00197 
00198                 virtual char16_t readChar16();
00199 
00200 
00201 
00202 
00203                 virtual String::View readString();
00204 
00205 
00206 
00207 
00208                 virtual int16_t readInt16();
00209 
00210 
00211 
00212 
00213                 virtual int32_t readInt32();
00214 
00215 
00216 
00217 
00218                 virtual int64_t readInt64();
00219 
00220 
00221 
00222 
00223                 virtual float32_t readFloat32();
00224 
00225 
00226 
00227 
00228                 virtual float64_t readFloat64();
00229 
00230             
00231 
00232             protected:
00233 
00234 
00235 
00236 
00237 
00238                 virtual void setOffsetInternal(size32_t of);
00239 
00240 
00241 
00242 
00243 
00244 
00245 
00246 
00247 
00248 
00249 
00250 
00251 
00252 
00253 
00254 
00255                 virtual String::View readUTF(size32_t cb);
00256 
00257 
00258 
00259 
00260 
00261 
00262 
00263 
00264 
00265 
00266 
00267 
00268                 virtual String::View convertUTF(size32_t of, size32_t cb) const;
00269 
00270             
00271 
00272             protected:
00273 
00274 
00275 
00276                 FinalView<AbstractReadBuffer> m_vBuf;
00277 
00278 
00279 
00280 
00281                 size32_t m_of;
00282             };
00283 
00284 
00285     
00286 
00287     public:
00288 
00289 
00290 
00291         static Array<octet_t>::Handle getEmptyOctetArray();
00292 
00293 
00294 
00295 
00296         static ReadBuffer::Handle getEmptyReadBuffer();
00297     };
00298 
00299 COH_CLOSE_NAMESPACE2
00300 
00301 #endif // COH_ABSTRACT_READ_BUFFER_HPP