tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SocketProcessBackgroundChild.h (1584B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 #ifndef mozilla_net_SocketProcessBackgroundChild_h
      7 #define mozilla_net_SocketProcessBackgroundChild_h
      8 
      9 #include "mozilla/MoveOnlyFunction.h"
     10 #include "mozilla/net/PSocketProcessBackgroundChild.h"
     11 #include "mozilla/StaticMutex.h"
     12 #include "mozilla/StaticPtr.h"
     13 
     14 namespace mozilla {
     15 namespace net {
     16 
     17 class SocketProcessBackgroundChild final
     18    : public PSocketProcessBackgroundChild {
     19 public:
     20  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(SocketProcessBackgroundChild, final)
     21 
     22  static void Create(ipc::Endpoint<PSocketProcessBackgroundChild>&& aEndpoint);
     23  static void Shutdown();
     24  // |aCallback| will be called with the actor asynchronously on |sTaskQueue|.
     25  static nsresult WithActor(
     26      const char* aName,
     27      MoveOnlyFunction<void(SocketProcessBackgroundChild*)> aCallback);
     28 
     29 private:
     30  SocketProcessBackgroundChild();
     31  virtual ~SocketProcessBackgroundChild();
     32 
     33  static RefPtr<SocketProcessBackgroundChild> GetSingleton();
     34  static already_AddRefed<nsISerialEventTarget> TaskQueue();
     35 
     36  static StaticMutex sMutex;
     37  static StaticRefPtr<SocketProcessBackgroundChild> sInstance
     38      MOZ_GUARDED_BY(sMutex);
     39  static StaticRefPtr<nsISerialEventTarget> sTaskQueue MOZ_GUARDED_BY(sMutex);
     40 };
     41 
     42 }  // namespace net
     43 }  // namespace mozilla
     44 
     45 #endif  // mozilla_net_SocketProcessBackgroundChild_h