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