/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * The contents of this file are subject to the Netscape Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.    Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s):
 * Mitesh Shah <mitesh@netscape.com>
 *
 */

#include "nsIAutoConfig.h"
#include "nsITimer.h"
#include "nsITimerCallback.h"
#include "nsIFile.h"
#include "nsIObserver.h"
#include "nsNetUtil.h"
#include "nsIPrefService.h"
#include "nsIPrefBranch.h"
#include "nsWeakReference.h"

class nsAutoConfig : public nsIAutoConfig,
                     public nsITimerCallback,
                     public nsIStreamListener,
                     public nsIObserver

{
 public:

  NS_DECL_ISUPPORTS
  NS_DECL_NSIAUTOCONFIG
  NS_DECL_NSIREQUESTOBSERVER
  NS_DECL_NSISTREAMLISTENER
  NS_DECL_NSIOBSERVER
  NS_IMETHOD_(void) Notify(nsITimer *timer);
  nsAutoConfig();
  virtual ~nsAutoConfig();
  nsresult Init();
  
 protected:
  
  nsresult readOfflineFile();
  nsresult evaluateLocalFile(nsIFile * file);
  nsresult writeFailoverFile();
  nsresult getEmailAddr(nsAWritableCString & emailAddr);
  nsCString mBuf, mCurrProfile;
  nsCOMPtr<nsIPrefBranch> mPrefBranch;
  PRBool mLoaded;
};
