From 16f4d20fa2d7540142e8f71c6ef88519a7539fb2 Mon Sep 17 00:00:00 2001 From: "gordon%netscape.com" Date: Thu, 3 Jun 1999 21:53:30 +0000 Subject: [PATCH] First Checked In. git-svn-id: svn://10.0.0.236/trunk@33606 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/netwerk/dns/src/nsDnsService.cpp | 147 +++++++++++++++++++++++ mozilla/netwerk/dns/src/nsDnsService.h | 59 +++++++++ mozilla/netwerk/macbuild/netwerk.mcp | Bin 0 -> 49490 bytes 3 files changed, 206 insertions(+) create mode 100644 mozilla/netwerk/dns/src/nsDnsService.cpp create mode 100644 mozilla/netwerk/dns/src/nsDnsService.h create mode 100644 mozilla/netwerk/macbuild/netwerk.mcp diff --git a/mozilla/netwerk/dns/src/nsDnsService.cpp b/mozilla/netwerk/dns/src/nsDnsService.cpp new file mode 100644 index 00000000000..6f0d0fe8ad6 --- /dev/null +++ b/mozilla/netwerk/dns/src/nsDnsService.cpp @@ -0,0 +1,147 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1999 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsDnsService.h" +#include "nsIDnsListener.h" +#include "nsICancelable.h" +#include "prnetdb.h" + + +//////////////////////////////////////////////////////////////////////////////// + +class nsDnsRequest; + +class nsDnsLookup +{ +public: + nsresult AddDnsRequest(nsDnsRequest* request); + + const char* mHostName; + PRHostEnt mHostEntry; // NSPR or platform specific hostent? + PRIntn mCount; + PRBool mComplete; + PRIntn mIndex; // XXX - for round robin + void * mListenerQueue; // XXX - maintain a list of nsDnsRequests. +}; + + +class nsDnsRequest : public nsICancelable +{ + nsIDnsListener* mListener; + nsDnsLookup* mHostNameLookup; + + // nsICancelable methods: + NS_IMETHOD Cancel(void); + NS_IMETHOD Suspend(void); + NS_IMETHOD Resume(void); +}; + + +//////////////////////////////////////////////////////////////////////////////// +// nsDnsService methods: + +nsDnsService::nsDnsService() +{ + NS_INIT_REFCNT(); +} + +nsresult +nsDnsService::Init() +{ +// initialize dns cache (persistent?) +#if defined(XP_MAC) +// create Open Transport Service Provider for DNS Lookups +#elif defined(_WIN) +// create DNS EventHandler Window +#elif define(XP_UNIX) +// XXXX - ? +#endif + + return NS_OK; +} + + +nsDnsService::~nsDnsService() +{ +// deallocate cache +#if defined(XP_MAC) +// deallocate Open Transport Service Provider +#elif defined(_WIN) +// dispose DNS EventHandler Window +#elif define(XP_UNIX) +// XXXX - ? +#endif +} + + +NS_IMPL_ISUPPORTS(nsDnsService, nsIDnsService::GetIID()); + +//////////////////////////////////////////////////////////////////////////////// +// nsIDnsService methods: + + +NS_IMETHODIMP +nsDnsService::Lookup(const char* hostname, + nsIDnsListener* listener, + nsICancelable* *dnsRequest) +{ + nsresult rv; + PRStatus status; + nsHostEnt* hostentry; +/* + check cache for existing nsDnsLookup with matching hostname + call OnStartLookup + if (nsDnsLookup doesn't exist) { + create nsDnsLookup for this hostname + kick off DNS Lookup + } + + if (nsDnsLookup already has at least one address) { + call OnFound + } + + if (nsDnsLookup is already complete) { + call OnStopLookup + return null + } + + create nsDnsRequest + queue nsDnsRequest on nsDnsLookup // XXXX - potential race condition here + return nsDnsRequest +*/ + + // temporary SYNC version + hostentry = new nsHostEnt; + if (!hostentry) + return NS_ERROR_OUT_OF_MEMORY; + + rv = listener->OnStartLookup(hostname); + + + status = PR_GetHostByName(hostname, hostentry->buffer, PR_NETDB_BUF_SIZE, &hostentry->hostEnt); + + if (PR_SUCCESS == status) + rv = listener->OnFound(hostname, hostentry); // turn ownership of hostentry over to listener? + else + delete hostentry; + + rv = listener->OnStopLookup(hostname); + + return NS_OK; +} + diff --git a/mozilla/netwerk/dns/src/nsDnsService.h b/mozilla/netwerk/dns/src/nsDnsService.h new file mode 100644 index 00000000000..c715810f332 --- /dev/null +++ b/mozilla/netwerk/dns/src/nsDnsService.h @@ -0,0 +1,59 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1999 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#ifndef nsDnsService_h__ +#define nsDnsService_h__ + +#include "nsIDnsService.h" + + +class nsIDnsListener; +class nsICancelable; + +class nsDnsService : public nsIDnsService +{ +public: + NS_DECL_ISUPPORTS + + // nsDnsService methods: + nsDnsService(); + virtual ~nsDnsService(); + nsresult Init(); + + // nsIDnsService methods: + NS_IMETHOD Lookup(const char* hostname, + nsIDnsListener* listener, + nsICancelable* *dnsRequest); +protected: + // nsDnsLookup cache? - list of nsDnsLookups + +#if defined(XP_MAC) + InetSvcRef mServiceRef; + +#elif defined(XP_UNIX) + //XXX - to be defined + +#elif defined(_WIN32) + WNDCLASS wc; + HWND dnsWindow; + UINT msgAsyncSelect; + UINT msgFoundDNS; +#endif +}; + +#endif /* nsDnsService_h__ */ diff --git a/mozilla/netwerk/macbuild/netwerk.mcp b/mozilla/netwerk/macbuild/netwerk.mcp new file mode 100644 index 0000000000000000000000000000000000000000..4d1f04793684d486f53966a12ef5ee5669d26738 GIT binary patch literal 49490 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 bL$tfL3vYsslZ$+Q9+Bj?Z~X@7F>?POM>a_b literal 0 HcmV?d00001