00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef _ACEXML_HTTPCHARSTREAM_H_
00014 #define _ACEXML_HTTPCHARSTREAM_H_
00015
00016 #include "ace/pre.h"
00017 #include "ACEXML/common/ACEXML_Export.h"
00018
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 #pragma once
00021 #endif
00022
00023 #include "ACEXML/common/CharStream.h"
00024 #include "ACEXML/common/URL_Addr.h"
00025 #include "ACEXML/common/Mem_Map_Stream.h"
00026
00027
00028
00029
00030
00031
00032 class ACEXML_Export ACEXML_HttpCharStream : public ACEXML_CharStream
00033 {
00034 public:
00035
00036 ACEXML_HttpCharStream (void);
00037
00038
00039 virtual ~ACEXML_HttpCharStream (void);
00040
00041
00042 int open (const ACEXML_Char *url);
00043
00044
00045
00046
00047
00048 virtual int available (void);
00049
00050
00051
00052
00053 virtual int close (void);
00054
00055
00056
00057
00058
00059 virtual int get (ACEXML_Char& ch);
00060
00061
00062
00063
00064 virtual int read (ACEXML_Char *str, size_t len);
00065
00066
00067
00068
00069
00070 virtual int peek (void);
00071
00072
00073
00074
00075 virtual void rewind (void);
00076
00077
00078
00079
00080 virtual int determine_encoding (void);
00081
00082
00083
00084
00085 virtual const ACEXML_Char* getEncoding (void);
00086
00087
00088
00089
00090 virtual const ACEXML_Char* getSystemId (void);
00091
00092
00093 private:
00094
00095 #if defined (ACE_USES_WCHAR)
00096
00097
00098
00099
00100 int get_i (ACEXML_Char& ch);
00101
00102
00103
00104
00105
00106
00107 int peek_i (void);
00108
00109 #endif
00110
00111
00112
00113
00114 int send_request (void);
00115
00116
00117
00118
00119 int get_url (size_t& len);
00120
00121 ACEXML_Char *url_;
00122
00123 ACEXML_URL_Addr* url_addr_;
00124
00125 ACEXML_Mem_Map_Stream* stream_;
00126
00127 Connector* connector_;
00128
00129 off_t size_;
00130
00131 off_t data_offset_;
00132
00133 ACEXML_Char* encoding_;
00134
00135 };
00136
00137
00138 #include "ace/post.h"
00139
00140 #endif