diff options
Diffstat (limited to 'src/stable/client.h')
-rw-r--r-- | src/stable/client.h | 224 |
1 files changed, 112 insertions, 112 deletions
diff --git a/src/stable/client.h b/src/stable/client.h index 6bd41af..cacc8aa 100644 --- a/src/stable/client.h +++ b/src/stable/client.h | |||
@@ -16,118 +16,118 @@ | |||
16 | 16 | ||
17 | namespace Bu | 17 | namespace Bu |
18 | { | 18 | { |
19 | class Protocol; | 19 | class Protocol; |
20 | class Stream; | 20 | class Stream; |
21 | class TcpSocket; | 21 | class TcpSocket; |
22 | class ClientLinkFactory; | 22 | class ClientLinkFactory; |
23 | 23 | ||
24 | /** | 24 | /** |
25 | *@ingroup Serving | 25 | *@ingroup Serving |
26 | */ | 26 | */ |
27 | class Client : public Bu::Stream | 27 | class Client : public Bu::Stream |
28 | { | 28 | { |
29 | public: | 29 | public: |
30 | Client( Bu::TcpSocket *pSocket, Bu::ClientLinkFactory *pfLink ); | 30 | Client( Bu::TcpSocket *pSocket, Bu::ClientLinkFactory *pfLink ); |
31 | virtual ~Client(); | 31 | virtual ~Client(); |
32 | 32 | ||
33 | void processInput(); | 33 | void processInput(); |
34 | void processOutput(); | 34 | void processOutput(); |
35 | 35 | ||
36 | //Bu::String &getInput(); | 36 | //Bu::String &getInput(); |
37 | //Bu::String &getOutput(); | 37 | //Bu::String &getOutput(); |
38 | Bu::size write( const Bu::String &sData ); | 38 | Bu::size write( const Bu::String &sData ); |
39 | Bu::size write( const void *pData, Bu::size nBytes ); | 39 | Bu::size write( const void *pData, Bu::size nBytes ); |
40 | Bu::size write( int8_t nData ); | 40 | Bu::size write( int8_t nData ); |
41 | Bu::size write( int16_t nData ); | 41 | Bu::size write( int16_t nData ); |
42 | Bu::size write( int32_t nData ); | 42 | Bu::size write( int32_t nData ); |
43 | Bu::size write( int64_t nData ); | 43 | Bu::size write( int64_t nData ); |
44 | Bu::size write( uint8_t nData ); | 44 | Bu::size write( uint8_t nData ); |
45 | Bu::size write( uint16_t nData ); | 45 | Bu::size write( uint16_t nData ); |
46 | Bu::size write( uint32_t nData ); | 46 | Bu::size write( uint32_t nData ); |
47 | Bu::size write( uint64_t nData ); | 47 | Bu::size write( uint64_t nData ); |
48 | Bu::size read( void *pData, Bu::size nBytes ); | 48 | Bu::size read( void *pData, Bu::size nBytes ); |
49 | Bu::size peek( void *pData, int nBytes, int nOffset=0 ); | 49 | Bu::size peek( void *pData, int nBytes, int nOffset=0 ); |
50 | // void seek( int nBytes ); | 50 | // void seek( int nBytes ); |
51 | Bu::size getInputSize(); | 51 | Bu::size getInputSize(); |
52 | Bu::size getOutputSize(); | 52 | Bu::size getOutputSize(); |
53 | 53 | ||
54 | void setProtocol( Protocol *pProto ); | 54 | void setProtocol( Protocol *pProto ); |
55 | Bu::Protocol *getProtocol(); | 55 | Bu::Protocol *getProtocol(); |
56 | void clearProtocol(); | 56 | void clearProtocol(); |
57 | 57 | ||
58 | bool isOpen(); | 58 | bool isOpen(); |
59 | void close(); | 59 | void close(); |
60 | void tick(); | 60 | void tick(); |
61 | 61 | ||
62 | const Bu::TcpSocket *getSocket() const; | 62 | const Bu::TcpSocket *getSocket() const; |
63 | 63 | ||
64 | void disconnect(); | 64 | void disconnect(); |
65 | bool wantsDisconnect(); | 65 | bool wantsDisconnect(); |
66 | 66 | ||
67 | class ClientLink *getLink(); | 67 | class ClientLink *getLink(); |
68 | 68 | ||
69 | void onMessage( const Bu::String &sMsg ); | 69 | void onMessage( const Bu::String &sMsg ); |
70 | 70 | ||
71 | bool hasOutput() { return qbWrite.getSize() > 0; } | 71 | bool hasOutput() { return qbWrite.getSize() > 0; } |
72 | bool hasInput() { return qbRead.getSize() > 0; } | 72 | bool hasInput() { return qbRead.getSize() > 0; } |
73 | 73 | ||
74 | template<typename filter> | 74 | template<typename filter> |
75 | void pushFilter() | 75 | void pushFilter() |
76 | { | 76 | { |
77 | filter *pFlt = new filter( *pTopStream ); | 77 | filter *pFlt = new filter( *pTopStream ); |
78 | pTopStream = pFlt; | 78 | pTopStream = pFlt; |
79 | lFilts.prepend( pFlt ); | 79 | lFilts.prepend( pFlt ); |
80 | } | 80 | } |
81 | 81 | ||
82 | template<typename filter, typename p1t> | 82 | template<typename filter, typename p1t> |
83 | void pushFilter( p1t p1 ) | 83 | void pushFilter( p1t p1 ) |
84 | { | 84 | { |
85 | filter *pFlt = new filter( *pTopStream, p1 ); | 85 | filter *pFlt = new filter( *pTopStream, p1 ); |
86 | pTopStream = pFlt; | 86 | pTopStream = pFlt; |
87 | lFilts.prepend( pFlt ); | 87 | lFilts.prepend( pFlt ); |
88 | } | 88 | } |
89 | 89 | ||
90 | template<typename filter, typename p1t, typename p2t> | 90 | template<typename filter, typename p1t, typename p2t> |
91 | void pushFilter( p1t p1, p2t p2 ) | 91 | void pushFilter( p1t p1, p2t p2 ) |
92 | { | 92 | { |
93 | filter *pFlt = new filter( *pTopStream, p1, p2 ); | 93 | filter *pFlt = new filter( *pTopStream, p1, p2 ); |
94 | pTopStream = pFlt; | 94 | pTopStream = pFlt; |
95 | lFilts.prepend( pFlt ); | 95 | lFilts.prepend( pFlt ); |
96 | } | 96 | } |
97 | 97 | ||
98 | /* | 98 | /* |
99 | * These are required to qualify as a stream, I dunno how many will | 99 | * These are required to qualify as a stream, I dunno how many will |
100 | * be implemented. | 100 | * be implemented. |
101 | */ | 101 | */ |
102 | virtual Bu::size tell(); | 102 | virtual Bu::size tell(); |
103 | virtual void seek( Bu::size offset ); | 103 | virtual void seek( Bu::size offset ); |
104 | virtual void setPos( Bu::size pos ); | 104 | virtual void setPos( Bu::size pos ); |
105 | virtual void setPosEnd( Bu::size pos ); | 105 | virtual void setPosEnd( Bu::size pos ); |
106 | virtual bool isEos(); | 106 | virtual bool isEos(); |
107 | virtual void flush(); | 107 | virtual void flush(); |
108 | virtual bool canRead(); | 108 | virtual bool canRead(); |
109 | virtual bool canWrite(); | 109 | virtual bool canWrite(); |
110 | virtual bool isReadable(); | 110 | virtual bool isReadable(); |
111 | virtual bool isWritable(); | 111 | virtual bool isWritable(); |
112 | virtual bool isSeekable(); | 112 | virtual bool isSeekable(); |
113 | virtual bool isBlocking(); | 113 | virtual bool isBlocking(); |
114 | virtual void setBlocking( bool bBlocking=true ); | 114 | virtual void setBlocking( bool bBlocking=true ); |
115 | virtual void setSize( Bu::size iSize ); | 115 | virtual void setSize( Bu::size iSize ); |
116 | virtual size getSize() const; | 116 | virtual size getSize() const; |
117 | virtual size getBlockSize() const; | 117 | virtual size getBlockSize() const; |
118 | virtual Bu::String getLocation() const; | 118 | virtual Bu::String getLocation() const; |
119 | 119 | ||
120 | private: | 120 | private: |
121 | typedef Bu::List<Bu::Stream *> FilterList; | 121 | typedef Bu::List<Bu::Stream *> FilterList; |
122 | FilterList lFilts; | 122 | FilterList lFilts; |
123 | Bu::Stream *pTopStream; | 123 | Bu::Stream *pTopStream; |
124 | Bu::TcpSocket *pSocket; | 124 | Bu::TcpSocket *pSocket; |
125 | Bu::Protocol *pProto; | 125 | Bu::Protocol *pProto; |
126 | Bu::QueueBuf qbRead; | 126 | Bu::QueueBuf qbRead; |
127 | Bu::QueueBuf qbWrite; | 127 | Bu::QueueBuf qbWrite; |
128 | bool bWantsDisconnect; | 128 | bool bWantsDisconnect; |
129 | class Bu::ClientLinkFactory *pfLink; | 129 | class Bu::ClientLinkFactory *pfLink; |
130 | }; | 130 | }; |
131 | } | 131 | } |
132 | 132 | ||
133 | #endif | 133 | #endif |