00001
00002 #ifndef FILECHANNEL_V1_04_01_H_
00003 #define FILECHANNEL_V1_04_01_H_
00004
00005 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
00006 # pragma once
00007 #endif
00008
00009 #include "ftc/IDataChannel.h"
00010
00011 #include <string>
00012 #include <boost/shared_ptr.hpp>
00013
00014 namespace tecgraf { namespace ftc { namespace v1_04_01 {
00015
00021 class FileChannel : public IDataChannel
00022 {
00023 public:
00029 FileChannel(const std::string& filename, bool read_only);
00030
00034 virtual ~FileChannel();
00035
00037 virtual uint16_t supportedOperations() const;
00038
00040 virtual bool isOpen() const;
00042 virtual int64_t remaining() const;
00044 virtual uint64_t skip(const uint64_t count);
00045
00047 virtual int64_t read(Buffer& dest);
00049 virtual int64_t read(Buffer& dest, const uint64_t remotePosition);
00050
00052 virtual int64_t write(Buffer& source);
00054 virtual int64_t write(Buffer& source, const uint64_t remotePosition);
00055
00057 virtual uint64_t size() const;
00059 virtual void size(const uint64_t size);
00060
00062 virtual uint64_t position() const;
00064 virtual void position(const uint64_t position);
00065
00067 virtual int64_t transferTo(const uint64_t remotePosition, const uint64_t nbytes, IDataChannel& dest);
00069 virtual int64_t transferFrom(IDataChannel& source, const uint64_t remotePosition, const uint64_t nbytes);
00070 private:
00071 class impl;
00072 boost::shared_ptr<impl> impl_ptr;
00073 };
00074
00075 }}}
00076
00077 #endif
00078