blob: 5ee8f6d5e737d62ed4b513e19d22714e742741bd [file] [log] [blame]
Roger Meier86e89862012-02-10 19:53:20 +00001#ifndef _THRIFT_ASYNC_TQIODEVICE_TRANSPORT_H_
2#define _THRIFT_ASYNC_TQIODEVICE_TRANSPORT_H_ 1
3
Roger Meier86e89862012-02-10 19:53:20 +00004#include <boost/shared_ptr.hpp>
5
6#include <transport/TVirtualTransport.h>
7
Roger Meier19a99152012-02-11 19:09:30 +00008class QIODevice;
Roger Meier86e89862012-02-10 19:53:20 +00009
10namespace apache { namespace thrift { namespace transport {
11
Roger Meier19a99152012-02-11 19:09:30 +000012/**
13 * Transport that operates on a QIODevice (socket, file, etc).
14 */
15class TQIODeviceTransport : public apache::thrift::transport::TVirtualTransport<TQIODeviceTransport> {
16 public:
17 explicit TQIODeviceTransport(boost::shared_ptr<QIODevice> dev);
18 virtual ~TQIODeviceTransport();
Roger Meier86e89862012-02-10 19:53:20 +000019
Roger Meier19a99152012-02-11 19:09:30 +000020 void open();
21 bool isOpen();
22 bool peek();
23 void close();
Roger Meier86e89862012-02-10 19:53:20 +000024
Roger Meier19a99152012-02-11 19:09:30 +000025 uint32_t readAll(uint8_t *buf, uint32_t len);
26 uint32_t read(uint8_t* buf, uint32_t len);
Roger Meier86e89862012-02-10 19:53:20 +000027
Roger Meier19a99152012-02-11 19:09:30 +000028 void write(const uint8_t* buf, uint32_t len);
29 uint32_t write_partial(const uint8_t* buf, uint32_t len);
Roger Meier86e89862012-02-10 19:53:20 +000030
Roger Meier19a99152012-02-11 19:09:30 +000031 void flush();
Roger Meier86e89862012-02-10 19:53:20 +000032
Roger Meier19a99152012-02-11 19:09:30 +000033 uint8_t* borrow(uint8_t* buf, uint32_t* len);
34 void consume(uint32_t len);
Roger Meier86e89862012-02-10 19:53:20 +000035
Roger Meier19a99152012-02-11 19:09:30 +000036 private:
37 TQIODeviceTransport(const TQIODeviceTransport&);
38 TQIODeviceTransport& operator=(const TQIODeviceTransport&);
39
40 boost::shared_ptr<QIODevice> dev_;
41};
Roger Meier86e89862012-02-10 19:53:20 +000042}}} // apache::thrift::transport
43
44#endif // #ifndef _THRIFT_ASYNC_TQIODEVICE_TRANSPORT_H_
45