ftc/include/ftc/RemoteDataChannel.h

00001 // -*- coding: iso-8859-1-unix -*-
00002 #ifndef REMOTEDATACHANNEL_V1_04_01_H_
00003 #define REMOTEDATACHANNEL_V1_04_01_H_
00004 
00005 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
00006 # pragma once
00007 #endif
00008 
00009 #include "ftc/FTCException.h"
00010 #include "ftc/IDataChannel.h"
00011 #include "ftc/Buffer.h"
00012 #include "ftc/ftc_decl.h"
00013 #include "ftc/AccessKey.h"
00014 
00015 #include <string>
00016 #include <vector>
00017 #include <cstdio>
00018 
00019 #if defined(FTC_DOXYGEN)
00020 #define FTC_DECL
00021 #endif
00022 
00023 namespace tecgraf { namespace ftc { namespace v1_04_01
00024 {
00036   struct RemoteDataChannel : public IDataChannel
00037   {
00038   public:
00051     FTC_DECL
00052       RemoteDataChannel(const bool writable, const std::string& hostname, uint16_t port, const std::vector<uint8_t>& access_key);
00053 
00057     FTC_DECL
00058       virtual ~RemoteDataChannel();
00059 
00073     FTC_DECL
00074       virtual void open();
00075 
00084     FTC_DECL
00085       virtual void close();
00086 
00088     FTC_DECL
00089       virtual uint16_t supportedOperations() const;
00090 
00092     FTC_DECL
00093       virtual bool isOpen() const;
00094 
00096     FTC_DECL
00097     virtual int64_t remaining() const;
00098 
00100     FTC_DECL
00101     virtual uint64_t skip(const uint64_t count);
00102 
00110     FTC_DECL
00111       virtual uint64_t position() const;
00112 
00120     FTC_DECL
00121       virtual void position(const uint64_t position);
00122 
00130     FTC_DECL
00131       virtual uint64_t size() const;
00132 
00142     FTC_DECL
00143       virtual void size(const uint64_t size);
00144 
00146     FTC_DECL
00147       virtual int64_t read(Buffer& dest);
00148 
00150     FTC_DECL
00151       virtual int64_t read(Buffer& dest, const uint64_t remotePosition);
00152 
00161     FTC_DECL
00162       virtual int64_t read(char* dest, const std::size_t nbytes);
00163 
00173     FTC_DECL
00174       virtual int64_t read(char* dest, const std::size_t nbytes, const uint64_t remotePosition);
00175 
00186     FTC_DECL
00187       virtual int64_t read(char* dest, const std::size_t offset, const std::size_t nbytes, const uint64_t remotePosition);
00188 
00190     FTC_DECL
00191       virtual int64_t write(Buffer& source);
00192 
00194     FTC_DECL
00195       virtual int64_t write(Buffer& source, const uint64_t remotePosition);
00196 
00205     FTC_DECL
00206       virtual int64_t write(const char* source, const uint64_t nbytes);
00207 
00217     FTC_DECL
00218       virtual int64_t write(const char* source, const uint64_t nbytes, const uint64_t remotePosition);
00219 
00230     FTC_DECL
00231       virtual int64_t write(const char* source, const std::size_t offset, const uint64_t nbytes, const uint64_t remotePosition);
00232 
00234     FTC_DECL
00235       virtual int64_t transferTo(const uint64_t remotePosition, const uint64_t nbytes, IDataChannel& dest);
00236 
00238     FTC_DECL
00239       virtual int64_t transferFrom(IDataChannel& source, const uint64_t remotePosition, const uint64_t nbytes);
00240 
00251     FTC_DECL
00252       virtual int64_t transferTo(const uint64_t remotePosition, const uint64_t nbytes, FILE& fd);
00253 
00259     FTC_DECL
00260       void keepAlive();
00261 
00267     FTC_DECL
00268       std::size_t bufferSize() const;
00269 
00275     FTC_DECL
00276       void bufferSize(std::size_t value);
00277 
00278 
00279   private:
00281     RemoteDataChannel(RemoteDataChannel const&);
00283     RemoteDataChannel & operator=(RemoteDataChannel const&);
00284 
00286     void protocolVersionHandshake();
00288     void authenticate();
00290     void doOpen();
00291 
00293     void checkIsOpen() const;
00294 
00296     struct ftc_socket_t;
00298     ftc_socket_t* ftc_socket;
00299 
00300     const bool writable; 
00301     const std::string hostname; 
00302     const uint16_t port; 
00303     const std::vector<uint8_t> access_key; 
00304     uint16_t supported_operations; 
00305     std::size_t buffer_size; 
00306   };
00307 
00308 }}}
00309 
00310 #endif
00311 

Gerado em Mon Feb 3 03:15:08 2014 para FTC[C++] por  doxygen 1.4.7