00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 #ifndef COH_ABSTRACT_WRITE_BUFFER_HPP
00017 #define COH_ABSTRACT_WRITE_BUFFER_HPP
00018 
00019 #include "coherence/lang.ns"
00020 
00021 #include "coherence/io/ReadBuffer.hpp"
00022 #include "coherence/io/WriteBuffer.hpp"
00023 
00024 
00025 
00026 COH_OPEN_NAMESPACE2(coherence,util)
00027 
00028 class Binary;
00029 
00030 COH_CLOSE_NAMESPACE2
00031 
00032 COH_OPEN_NAMESPACE2(coherence,io)
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 class COH_EXPORT AbstractWriteBuffer
00045     : public abstract_spec<AbstractWriteBuffer,
00046         extends<Object>,
00047         implements<WriteBuffer> >
00048     {
00049     
00050 
00051     public:
00052         typedef this_spec::Handle Handle;
00053         typedef this_spec::View   View;
00054         typedef this_spec::Holder Holder;
00055 
00056 
00057 
00058 
00059         typedef TypedHandle<const coherence::util::Binary> BinaryView;
00060 
00061 
00062     
00063 
00064     protected:
00065 
00066 
00067 
00068         AbstractWriteBuffer();
00069 
00070 
00071 
00072 
00073         AbstractWriteBuffer(const AbstractWriteBuffer& that);
00074 
00075 
00076     
00077 
00078     public:
00079 
00080 
00081 
00082         virtual size32_t getMaximumCapacity() const;
00083 
00084 
00085 
00086 
00087         virtual void write(size32_t ofDest, Array<octet_t>::View vabSrc);
00088 
00089 
00090 
00091 
00092         virtual void write(size32_t ofDest, ReadBuffer::View vBufSrc);
00093 
00094 
00095 
00096 
00097         virtual void write(size32_t ofDest, ReadBuffer::View vBufSrc,
00098                 size32_t ofSrc, size32_t cbSrc);
00099 
00100 
00101 
00102 
00103         using WriteBuffer::write;
00104 
00105 
00106 
00107 
00108         virtual void retain(size32_t of);
00109 
00110 
00111 
00112 
00113         using WriteBuffer::retain;
00114 
00115 
00116 
00117 
00118         virtual void clear();
00119 
00120 
00121 
00122 
00123         virtual WriteBuffer::Handle getWriteBuffer(size32_t of);
00124 
00125 
00126 
00127 
00128         virtual WriteBuffer::Handle getWriteBuffer(size32_t of, size32_t cb);
00129 
00130 
00131 
00132 
00133         virtual ReadBuffer::View getReadBuffer() const;
00134 
00135 
00136 
00137 
00138         virtual Array<octet_t>::View toOctetArray() const;
00139 
00140 
00141 
00142 
00143         virtual BinaryView toBinary() const;
00144 
00145 
00146     
00147 
00148     protected:
00149 
00150 
00151 
00152 
00153 
00154 
00155         virtual BufferOutput::Handle instantiateBufferOutput();
00156 
00157 
00158 
00159 
00160 
00161 
00162         virtual Array<octet_t>::Handle tmpbuf();
00163 
00164 
00165 
00166 
00167 
00168 
00169 
00170 
00171         virtual Array<octet_t>::Handle tmpbuf(size32_t cb);
00172 
00173 
00174     
00175 
00176     public:
00177 
00178 
00179 
00180 
00181 
00182 
00183         class COH_EXPORT AbstractBufferOutput
00184             : public class_spec<AbstractBufferOutput,
00185                 extends<Object>,
00186                 implements<BufferOutput> >
00187             {
00188             friend class factory<AbstractBufferOutput>;
00189 
00190             
00191 
00192             protected:
00193 
00194 
00195 
00196 
00197 
00198 
00199                 AbstractBufferOutput(AbstractWriteBuffer::Handle hBuf);
00200 
00201             
00202 
00203             public:
00204 
00205 
00206 
00207                 virtual WriteBuffer::Handle getBuffer();
00208 
00209 
00210 
00211 
00212                 virtual WriteBuffer::View getBuffer() const;
00213 
00214 
00215 
00216 
00217                 virtual size32_t getOffset() const;
00218 
00219 
00220 
00221 
00222                 virtual void setOffset(size32_t of);
00223 
00224 
00225 
00226 
00227                 virtual void write(octet_t b);
00228 
00229 
00230 
00231 
00232                 virtual void write(Array<octet_t>::View vab);
00233 
00234 
00235 
00236 
00237                 virtual void write(Array<octet_t>::View vab, size32_t of,
00238                         size32_t cb);
00239 
00240 
00241 
00242 
00243                 virtual void writeBuffer(ReadBuffer::View vBuf);
00244 
00245 
00246 
00247 
00248                 virtual void writeBuffer(ReadBuffer::View vBuf, size32_t of,
00249                         size32_t cb);
00250 
00251 
00252 
00253 
00254                 virtual void writeBoolean(bool f);
00255 
00256 
00257 
00258 
00259                 virtual void writeChar16(char16_t ch);
00260 
00261 
00262 
00263 
00264                 virtual void writeString(String::View vs);
00265 
00266 
00267 
00268 
00269                 virtual void writeInt16(int16_t n);
00270 
00271 
00272 
00273 
00274                 virtual void writeInt32(int32_t n);
00275 
00276 
00277 
00278 
00279                 virtual void writeInt64(int64_t n);
00280 
00281 
00282 
00283 
00284                 virtual void writeFloat32(float32_t fl);
00285 
00286 
00287 
00288 
00289                 virtual void writeFloat64(float64_t dfl);
00290 
00291             
00292 
00293             protected:
00294 
00295 
00296 
00297                 FinalHandle<AbstractWriteBuffer> f_hBuf;
00298 
00299 
00300 
00301 
00302                 size32_t m_ofWrite;
00303             };
00304 
00305 
00306 
00307 
00308         virtual BufferOutput::Handle getBufferOutput(size32_t of = 0);
00309 
00310 
00311 
00312 
00313         virtual BufferOutput::Handle getAppendingBufferOutput();
00314 
00315 
00316     
00317 
00318     protected:
00319 
00320 
00321 
00322         MemberHandle<Array<octet_t> > m_habBuf;
00323     };
00324 
00325 COH_CLOSE_NAMESPACE2
00326 
00327 #endif // COH_ABSTRACT_WRITE_BUFFER_HPP