1/* 2 * Transport.h 3 * Copyright 1999-2000 Y.Takagi. All Rights Reserved. 4 */ 5 6#ifndef __TRANSPORT_H 7#define __TRANSPORT_H 8 9#include <image.h> 10#include <string> 11 12class BDataIO; 13class PrinterData; 14 15 16using namespace std; 17 18 19extern "C" { 20 typedef BDataIO *(*PFN_init_transport)(BMessage *); 21 typedef void (*PFN_exit_transport)(void); 22} 23 24 25class TransportException { 26public: 27 TransportException(const string &what_arg); 28 const char* What() const; 29 30private: 31 string fWhat; 32}; 33 34 35class Transport { 36public: 37 Transport(const PrinterData* printerData); 38 ~Transport(); 39 40 void Write(const void *buffer, size_t size) 41 /* throw (TransportException) */; 42 void Read(void *buffer, size_t size) 43 /* throw (TransportException) */; 44 bool CheckAbort() const; 45 bool IsPrintToFileCanceled() const; 46 const string& LastError() const; 47 48protected: 49 Transport(const Transport& transport); 50 Transport &operator=(const Transport& transport); 51 52 void SetLastError(const char* message); 53 54private: 55 image_id fImage; 56 PFN_init_transport fInitTransport; 57 PFN_exit_transport fExitTransport; 58 BDataIO* fDataStream; 59 bool fAbort; 60 string fLastErrorString; 61}; 62 63#endif // __TRANSPORT_H 64