00001
00002 #ifndef IDATACHANNEL_V1_04_01_H_
00003 #define IDATACHANNEL_V1_04_01_H_
00004
00005 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
00006 # pragma once
00007 #endif
00008
00009 #include <boost/cstdint.hpp>
00010
00011 namespace tecgraf { namespace ftc { namespace v1_04_01 {
00012
00013 namespace Operations {
00017 enum Operation
00018 {
00019 no_operations = 0x00
00020 , get_size = 0x01
00021 , set_size = 0x02
00022 , get_position = 0x04
00023 , set_position = 0x08
00024 , read = 0x10
00025 , write = 0x20
00026 , transfer_from = 0x40
00027 , transfer_to = 0x80
00028 };
00029 }
00030
00031 class Buffer;
00032
00040 class IDataChannel
00041 {
00042 public:
00046 virtual ~IDataChannel() {}
00047
00058 virtual uint16_t supportedOperations() const = 0;
00059
00067 virtual bool isOpen() const = 0 ;
00068
00080 virtual int64_t remaining() const = 0;
00081
00090 virtual uint64_t skip(const uint64_t count) = 0;
00091
00101 virtual uint64_t size() const = 0;
00102
00112 virtual void size(const uint64_t size) = 0;
00113
00123 virtual uint64_t position() const = 0;
00124
00134 virtual void position(const uint64_t position) = 0;
00135
00146 virtual int64_t read(Buffer& dest) = 0;
00147
00159 virtual int64_t read(Buffer& dest, const uint64_t remotePosition) = 0;
00160
00171 virtual int64_t write(Buffer& source) = 0;
00172
00184 virtual int64_t write(Buffer& source, const uint64_t remotePosition) = 0;
00185
00198 virtual int64_t transferTo(const uint64_t remotePosition, const uint64_t nbytes, IDataChannel& dest) = 0;
00199
00212 virtual int64_t transferFrom(IDataChannel& source, const uint64_t remotePosition, const uint64_t nbytes) = 0;
00213 };
00214
00215 }}}
00216
00217 #endif
00218