00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_INTERNAL_NET_SSL_OPENSSL_OPENSSLSOCKETINPUTSTREAM_H_
00019 #define _DECAF_INTERNAL_NET_SSL_OPENSSL_OPENSSLSOCKETINPUTSTREAM_H_
00020
00021 #include <decaf/util/Config.h>
00022
00023 #include <decaf/io/InputStream.h>
00024
00025 namespace decaf {
00026 namespace internal {
00027 namespace net {
00028 namespace ssl {
00029 namespace openssl {
00030
00031 class OpenSSLSocket;
00032
00038 class DECAF_API OpenSSLSocketInputStream : public decaf::io::InputStream {
00039 private:
00040
00041 OpenSSLSocket* socket;
00042 volatile bool closed;
00043
00044 private:
00045
00046 OpenSSLSocketInputStream( const OpenSSLSocketInputStream& );
00047 OpenSSLSocketInputStream& operator= ( const OpenSSLSocketInputStream& );
00048
00049 public:
00050
00051 OpenSSLSocketInputStream( OpenSSLSocket* socket );
00052
00053 virtual ~OpenSSLSocketInputStream();
00054
00058 virtual int available() const;
00059
00066 virtual void close();
00067
00073 virtual long long skip( long long num );
00074
00075 protected:
00076
00077 virtual int doReadByte();
00078
00079 virtual int doReadArrayBounded( unsigned char* buffer, int size, int offset, int length );
00080
00081 };
00082
00083 }}}}}
00084
00085 #endif