Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/netwerk/base/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

Quelle  nsProxyInfo.h

  Sprache: C
 

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef nsProxyInfo_h_
#define nsProxyInfo_h_

#include "nsIProxyInfo.h"
#include "nsString.h"
#include "mozilla/Atomics.h"

// Use to support QI nsIProxyInfo to nsProxyInfo
#define NS_PROXYINFO_IID                      \
  {/* ed42f751-825e-4cc2-abeb-3670711a8b85 */ \
   0xed42f751,                                \
   0x825e,                                    \
   0x4cc2,                                    \
   {0xab, 0xeb, 0x36, 0x70, 0x71, 0x1a, 0x8b, 0x85}}

namespace mozilla {
namespace net {

class ProxyInfoCloneArgs;

// This class is exposed to other classes inside Necko for fast access
// to the nsIProxyInfo attributes.
class nsProxyInfo final : public nsIProxyInfo {
 public:
  NS_INLINE_DECL_STATIC_IID(NS_PROXYINFO_IID)

  NS_DECL_THREADSAFE_ISUPPORTS
  NS_DECL_NSIPROXYINFO

  // Cheap accessors for use within Necko
  const nsCString& Host() const { return mHost; }
  int32_t Port() const { return mPort; }
  const nsCString& MasqueTemplate() const { return mMasqueTemplate; }
  const char* Type() const { return mType; }
  uint32_t Flags() const { return mFlags; }
  const nsCString& Username() const { return mUsername; }
  const nsCString& Password() const { return mPassword; }
  uint32_t Timeout() { return mTimeout; }
  uint32_t ResolveFlags() { return mResolveFlags; }
  const nsCString& ProxyAuthorizationHeader() const {
    return mProxyAuthorizationHeader;
  }
  const nsCString& ConnectionIsolationKey() const {
    return mConnectionIsolationKey;
  }

  bool IsDirect();
  bool IsHTTP();
  bool IsHTTPS();
  bool IsSOCKS();
  bool IsHttp3Proxy();

  static void SerializeProxyInfo(nsProxyInfo* aProxyInfo,
                                 nsTArray<ProxyInfoCloneArgs>& aResult);
  static already_AddRefed<nsProxyInfo> DeserializeProxyInfo(
      const nsTArray<ProxyInfoCloneArgs>& aArgs);

  already_AddRefed<nsProxyInfo> CloneProxyInfoWithNewResolveFlags(
      uint32_t aResolveFlags);

  already_AddRefed<nsProxyInfo> CreateFallbackProxyInfo();

 private:
  friend class nsProtocolProxyService;

  explicit nsProxyInfo(const char* type = nullptr) : mType(type) {}

  nsProxyInfo(const nsACString& aType, const nsACString& aHost, int32_t aPort,
              const nsACString& aUsername, const nsACString& aPassword,
              uint32_t aFlags, uint32_t aTimeout, uint32_t aResolveFlags,
              const nsACString& aProxyAuthorizationHeader,
              const nsACString& aConnectionIsolationKey,
              const nsACString& aUriTemplate);

  ~nsProxyInfo() { NS_IF_RELEASE(mNext); }

  const char* mType;  // pointer to statically allocated value
  nsCString mHost;
  nsCString mUsername;
  nsCString mPassword;
  nsCString mProxyAuthorizationHeader;
  nsCString mConnectionIsolationKey;
  nsCString mSourceId;
  nsCString mMasqueTemplate;
  int32_t mPort{-1};
  uint32_t mFlags{0};
  // We need to read on multiple threads, but don't need to sync on anything
  // else
  Atomic<uint32_t, Relaxed> mResolveFlags{0};
  uint32_t mTimeout{UINT32_MAX};
  nsProxyInfo* mNext{nullptr};
};

}  // namespace net
}  // namespace mozilla

#endif  // nsProxyInfo_h_

Messung V0.5 in Prozent
C=89 H=92 G=90

¤ Dauer der Verarbeitung: 0.5 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.