ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/Search/HttpHandler.cpp
(Generate patch)

Comparing trunk/Search/HttpHandler.cpp (file contents):
Revision 1 by douglas, 2002-12-04T20:22:59-08:00 vs.
Revision 13 by douglas, 2002-12-06T19:56:56-08:00

# Line 50 | Line 50
50  
51   #include "HttpHandler.h"
52  
53 #ifdef _WIN32
54 #define PATH_SEPARATOR "\\"
55 #define ENV_SEPARATOR ';'
56 #else
57 #define PATH_SEPARATOR "/"
58 #define ENV_SEPARATOR ':'
59 #endif
60
53   HttpHandler::HttpHandler()
54   {
55 <        string arguments = "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/Strin"
56 <                + string("g;Ljava/lang/String;)Ljava/lang/String;");
55 > #ifdef _WIN32
56 >        WSADATA data;
57 >        if (WSAStartup(MAKEWORD(2, 0) != 0, &data))
58 >        {
59 >                error(program + ": WSAStartup()");
60 >                exit(1);
61 >        }
62 > #endif // _WIN32
63  
64          begin = 0;
67
68        setJarPath();
69
70 //      options[0].optionString = jarPath;
71 //      memset(&vm_args, 0, sizeof (vm_args));
72 //      vm_args.version = JNI_VERSION_1_4;
73 //      vm_args.nOptions = 1;
74 //      vm_args.options = options;
75
76 //      status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
77
78 //      if (status != JNI_ERR)
79 //      {
80 //              cls = env->FindClass("HttpConnector");
81
82 //              if (cls != 0)
83 //              {
84 //                      mid = env->GetStaticMethodID(cls, "connect", arguments.c_str());
85 //              }
86 //      }
65   }
66  
67   HttpHandler::~HttpHandler()
68   {
69 < //      if (status != JNI_ERR)
70 < //      {
71 < //              jvm->DestroyJavaVM();
94 < //      }
95 <
96 < //      delete [] jarPath;
69 > #ifdef _WIN32
70 >        WSACleanup();
71 > #endif // _WIN32
72   }
73  
74 < bool HttpHandler::connect(URL& url)
74 > bool HttpHandler::connect(URL &url, bool head)
75   {
76          bool answer = false;
77  
# Line 175 | Line 150 | void HttpHandler::clear()
150          page = "";
151   }
152  
153 < void HttpHandler::setJarPath()
153 > void HttpHandler::error(const string prefix, bool host)
154   {
155 <        const string jarFile = "HttpConnector.jar";
156 <        string jarFilePath = jarFile;
155 > #ifdef _WIN32
156 >        string error;
157  
158 <        ifstream fin(jarFilePath.c_str());
184 <        if (!fin.is_open())
158 >        switch (WSAGetLastError())
159          {
160 <                unsigned end = program.rfind(PATH_SEPARATOR);
161 <                if (end != string::npos)
162 <                {
163 <                        string path = program.substr(0, end);
164 <
165 <                        jarFilePath = path + PATH_SEPARATOR + jarFile;
166 <
167 <                        fin.open(jarFilePath.c_str());
168 <                        if (!fin.is_open())
169 <                        {
170 <                                cerr << program << ": Could not find required file: "
171 <                                        << jarFile << "\n";
172 <                                exit(1);
173 <                        }
174 <                        else
175 <                        {
176 <                                fin.close();
177 <                        }
178 <                }
179 <                else
180 <                {
181 <                        string envPath = getenv("PATH");
182 <
183 <                        if (debug) cerr << "envPath = " << envPath << "\n";
184 <
185 <                        unsigned begin = 0;
186 <                        do
187 <                        {
188 <                                unsigned end = envPath.find(ENV_SEPARATOR, begin);
189 <                                string path = envPath.substr(begin, end);
190 <
191 <                                if (debug) cerr << "path = " << path << "\n";
192 <
193 <                                jarFilePath = path + PATH_SEPARATOR + jarFile;
194 <
195 <                                fin.open(jarFilePath.c_str());
196 <                                if (fin.is_open())
197 <                                {
198 <                                        fin.close();
199 <                                        break;
200 <                                }
201 <
202 <                                begin = end != string::npos ? end + 1 : string::npos;
203 <                        }
204 <                        while (begin < envPath.length());
205 <
206 <                        if (begin == string::npos)
207 <                        {
208 <                                cerr << program << ": Could not find required file: "
209 <                                        << jarFile << "\n";
210 <                                exit(1);
211 <                        }
212 <                }
160 >        case WSAEACCES:
161 >                error = "Permission denied.";
162 >                break;
163 >        case WSAEADDRINUSE:
164 >                error = "Address already in use.";
165 >                break;
166 >        case WSAEADDRNOTAVAIL:
167 >                error = "Cannot assign requested address.";
168 >                break;
169 >        case WSAEAFNOSUPPORT:
170 >                error = "Address family not supported by protocol family.";
171 >                break;
172 >        case WSAEALREADY:
173 >                error = "Operation already in progress.";
174 >                break;
175 >        case WSAECONNABORTED:
176 >                error = "Software caused connection abort.";
177 >                break;
178 >        case WSAECONNREFUSED:
179 >                error = "Connection refused.";
180 >                break;
181 >        case WSAECONNRESET:
182 >                error = "Connection reset by peer.";
183 >                break;
184 >        case WSAEDESTADDRREQ:
185 >                error = "Destination address required.";
186 >                break;
187 >        case WSAEFAULT:
188 >                error = "Bad address.";
189 >                break;
190 >        case WSAEHOSTDOWN:
191 >                error = "Host is down.";
192 >                break;
193 >        case WSAEHOSTUNREACH:
194 >                error = "No route to host.";
195 >                break;
196 >        case WSAEINPROGRESS:
197 >                error = "Operation now in progress.";
198 >                break;
199 >        case WSAEINTR:
200 >                error = "Interrupted function call.";
201 >                break;
202 >        case WSAEINVAL:
203 >                error = "Invalid argument.";
204 >                break;
205 >        case WSAEISCONN:
206 >                error = "Socket is already connected.";
207 >                break;
208 >        case WSAEMFILE:
209 >                error = "Too many open files.";
210 >                break;
211 >        case WSAEMSGSIZE:
212 >                error = "Message too long.";
213 >                break;
214 >        case WSAENETDOWN:
215 >                error = "Network is down.";
216 >                break;
217 >        case WSAENETRESET:
218 >                error = "Network dropped connection on reset.";
219 >                break;
220 >        case WSAENETUNREACH:
221 >                error = "Network is unreachable.";
222 >                break;
223 >        case WSAENOBUFS:
224 >                error = "No buffer space available.";
225 >                break;
226 >        case WSAENOPROTOOPT:
227 >                error = "Bad protocol option.";
228 >                break;
229 >        case WSAENOTCONN:
230 >                error = "Socket is not connected.";
231 >                break;
232 >        case WSAENOTSOCK:
233 >                error = "Socket operation on non-socket.";
234 >                break;
235 >        case WSAEOPNOTSUPP:
236 >                error = "Operation not supported.";
237 >                break;
238 >        case WSAEPFNOSUPPORT:
239 >                error = "Protocol family not supported.";
240 >                break;
241 >        case WSAEPROCLIM:
242 >                error = "Too many processes.";
243 >                break;
244 >        case WSAEPROTONOSUPPORT:
245 >                error = "Protocol not supported.";
246 >                break;
247 >        case WSAEPROTOTYPE:
248 >                error = "Protocol wrong type for socket.";
249 >                break;
250 >        case WSAESHUTDOWN:
251 >                error = "Cannot send after socket shutdown.";
252 >                break;
253 >        case WSAESOCKTNOSUPPORT:
254 >                error = "Socket type not supported.";
255 >                break;
256 >        case WSAETIMEDOUT:
257 >                error = "Connection timed out.";
258 >                break;
259 >        case WSATYPE_NOT_FOUND:
260 >                error = "Class type not found.";
261 >                break;
262 >        case WSAEWOULDBLOCK:
263 >                error = "Resource temporarily unavailable.";
264 >                break;
265 >        case WSAHOST_NOT_FOUND:
266 >                error = "Host not found.";
267 >                break;
268 >        case WSA_INVALID_HANDLE:
269 >                error = "Specified event object handle is invalid.";
270 >                break;
271 >        case WSA_INVALID_PARAMETER:
272 >                error = "One or more parameters are invalid.";
273 >                break;
274 > //      case WSAINVALIDPROCTABLE:
275 > //              error = "Invalid procedure table from service provider.";
276 > //              break;
277 > //      case WSAINVALIDPROVIDER:
278 > //              error = "Invalid service provider version number.";
279 > //              break;
280 >        case WSA_IO_INCOMPLETE:
281 >                error = "Overlapped I/O event object not in signaled state.";
282 >                break;
283 >        case WSA_IO_PENDING:
284 >                error = "Overlapped operations will complete later.";
285 >                break;
286 >        case WSA_NOT_ENOUGH_MEMORY:
287 >                error = "Insufficient memory available.";
288 >                break;
289 >        case WSANOTINITIALISED:
290 >                error = "Successful WSAStartup not yet performed.";
291 >                break;
292 >        case WSANO_DATA:
293 >                error = "Valid name, no data record of requested type.";
294 >                break;
295 >        case WSANO_RECOVERY:
296 >                error = "This is a non-recoverable error.";
297 >                break;
298 > //      case WSAPROVIDERFAILEDINIT:
299 > //              error = "Unable to initialize a service provider.";
300 > //              break;
301 >        case WSASYSCALLFAILURE:
302 >                error = "System call failure.";
303 >                break;
304 >        case WSASYSNOTREADY:
305 >                error = "Network subsystem is unavailable.";
306 >                break;
307 >        case WSATRY_AGAIN:
308 >                error = "Non-authoritative host not found.";
309 >                break;
310 >        case WSAVERNOTSUPPORTED:
311 >                error = "WINSOCK.DLL version out of range.";
312 >                break;
313 >        case WSAEDISCON:
314 >                error = "Graceful shutdown in progress.";
315 >                break;
316 >        case WSA_OPERATION_ABORTED:
317 >                error = "Overlapped operation aborted.";
318 >                break;
319 >        default:
320 >                error = "Unknown error.";
321 >                break;
322 >        }
323 >
324 >        cerr << prefix << ": " << error << "\n";
325 > #else
326 >        if (host)
327 >        {
328 >                herror(prefix.c_str());
329          }
330          else
331          {
332 <                fin.close();
332 >                perror(prefix.c_str());
333          }
334 <
245 <        string jarPath = "-Djava.class.path=" + jarFilePath;
246 <
247 < //      this->jarPath = new char[jarPath.length()];
248 < //      strcpy(this->jarPath, jarPath.c_str());
334 > #endif // _WIN32
335   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines