/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* 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 mozilla_net_SocketProcessBridgeChild_h #define mozilla_net_SocketProcessBridgeChild_h #include #include "mozilla/net/PSocketProcessBridgeChild.h" #include "nsIObserver.h" namespace mozilla { namespace net { // The IPC actor implements PSocketProcessBridgeChild in content process. // This is allocated and kept alive by NeckoChild. When "content-child-shutdown" // topic is observed, this actor will be destroyed. class SocketProcessBridgeChild final : public PSocketProcessBridgeChild, public nsIObserver { public: NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_NSIOBSERVER static already_AddRefed GetSingleton(); using GetPromise = MozPromise, nsCString, false>; static RefPtr GetSocketProcessBridge(); mozilla::ipc::IPCResult RecvTest(); void ActorDestroy(ActorDestroyReason aWhy) override; void DeferredDestroy(); bool IsShuttingDown() const { return mShuttingDown; }; bool Inited() const { return mInited; }; ProcessId SocketProcessPid() const { return mSocketProcessPid; }; private: DISALLOW_COPY_AND_ASSIGN(SocketProcessBridgeChild); static bool Create(Endpoint&& aEndpoint); explicit SocketProcessBridgeChild( Endpoint&& aEndpoint); virtual ~SocketProcessBridgeChild(); static StaticRefPtr sSocketProcessBridgeChild; bool mShuttingDown; bool mInited = false; ProcessId mSocketProcessPid; }; } // namespace net } // namespace mozilla #endif // mozilla_net_SocketProcessBridgeChild_h