diff options
Diffstat (limited to 'dom/presentation/provider/MulticastDNSDeviceProvider.h')
-rw-r--r-- | dom/presentation/provider/MulticastDNSDeviceProvider.h | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/dom/presentation/provider/MulticastDNSDeviceProvider.h b/dom/presentation/provider/MulticastDNSDeviceProvider.h deleted file mode 100644 index c6a91b3d8..000000000 --- a/dom/presentation/provider/MulticastDNSDeviceProvider.h +++ /dev/null @@ -1,225 +0,0 @@ -/* -*- 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_dom_presentation_provider_MulticastDNSDeviceProvider_h -#define mozilla_dom_presentation_provider_MulticastDNSDeviceProvider_h - -#include "mozilla/RefPtr.h" -#include "nsCOMPtr.h" -#include "nsICancelable.h" -#include "nsIDNSServiceDiscovery.h" -#include "nsIObserver.h" -#include "nsIPresentationDevice.h" -#include "nsIPresentationDeviceProvider.h" -#include "nsIPresentationControlService.h" -#include "nsITimer.h" -#include "nsString.h" -#include "nsTArray.h" -#include "nsWeakPtr.h" - -class nsITCPDeviceInfo; - -namespace mozilla { -namespace dom { -namespace presentation { - -class DNSServiceWrappedListener; -class MulticastDNSService; - -class MulticastDNSDeviceProvider final - : public nsIPresentationDeviceProvider - , public nsIDNSServiceDiscoveryListener - , public nsIDNSRegistrationListener - , public nsIDNSServiceResolveListener - , public nsIPresentationControlServerListener - , public nsIObserver -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIPRESENTATIONDEVICEPROVIDER - NS_DECL_NSIDNSSERVICEDISCOVERYLISTENER - NS_DECL_NSIDNSREGISTRATIONLISTENER - NS_DECL_NSIDNSSERVICERESOLVELISTENER - NS_DECL_NSIPRESENTATIONCONTROLSERVERLISTENER - NS_DECL_NSIOBSERVER - - explicit MulticastDNSDeviceProvider() = default; - nsresult Init(); - nsresult Uninit(); - -private: - enum class DeviceState : uint32_t { - eUnknown, - eActive - }; - - class Device final : public nsIPresentationDevice - { - public: - NS_DECL_ISUPPORTS - NS_DECL_NSIPRESENTATIONDEVICE - - explicit Device(const nsACString& aId, - const nsACString& aName, - const nsACString& aType, - const nsACString& aAddress, - const uint16_t aPort, - const nsACString& aCertFingerprint, - DeviceState aState, - MulticastDNSDeviceProvider* aProvider) - : mId(aId) - , mName(aName) - , mType(aType) - , mAddress(aAddress) - , mPort(aPort) - , mCertFingerprint(aCertFingerprint) - , mState(aState) - , mProvider(aProvider) - { - } - - const nsCString& Id() const - { - return mId; - } - - const nsCString& Address() const - { - return mAddress; - } - - uint16_t Port() const - { - return mPort; - } - - const nsCString& CertFingerprint() const - { - return mCertFingerprint; - } - - DeviceState State() const - { - return mState; - } - - void ChangeState(DeviceState aState) - { - mState = aState; - } - - void Update(const nsACString& aName, - const nsACString& aType, - const nsACString& aAddress, - const uint16_t aPort, - const nsACString& aCertFingerprint) - { - mName = aName; - mType = aType; - mAddress = aAddress; - mPort = aPort; - mCertFingerprint = aCertFingerprint; - } - - private: - virtual ~Device() = default; - - nsCString mId; - nsCString mName; - nsCString mType; - nsCString mAddress; - uint16_t mPort; - nsCString mCertFingerprint; - DeviceState mState; - MulticastDNSDeviceProvider* mProvider; - }; - - struct DeviceIdComparator { - bool Equals(const RefPtr<Device>& aA, const RefPtr<Device>& aB) const { - return aA->Id() == aB->Id(); - } - }; - - struct DeviceAddressComparator { - bool Equals(const RefPtr<Device>& aA, const RefPtr<Device>& aB) const { - return aA->Address() == aB->Address(); - } - }; - - virtual ~MulticastDNSDeviceProvider(); - nsresult StartServer(); - nsresult StopServer(); - void AbortServerRetry(); - nsresult RegisterMDNSService(); - nsresult UnregisterMDNSService(nsresult aReason); - nsresult StopDiscovery(nsresult aReason); - nsresult Connect(Device* aDevice, - nsIPresentationControlChannel** aRetVal); - bool IsCompatibleServer(nsIDNSServiceInfo* aServiceInfo); - - // device manipulation - nsresult AddDevice(const nsACString& aId, - const nsACString& aServiceName, - const nsACString& aServiceType, - const nsACString& aAddress, - const uint16_t aPort, - const nsACString& aCertFingerprint); - nsresult UpdateDevice(const uint32_t aIndex, - const nsACString& aServiceName, - const nsACString& aServiceType, - const nsACString& aAddress, - const uint16_t aPort, - const nsACString& aCertFingerprint); - nsresult RemoveDevice(const uint32_t aIndex); - bool FindDeviceById(const nsACString& aId, - uint32_t& aIndex); - - bool FindDeviceByAddress(const nsACString& aAddress, - uint32_t& aIndex); - - already_AddRefed<Device> - GetOrCreateDevice(nsITCPDeviceInfo* aDeviceInfo); - - void MarkAllDevicesUnknown(); - void ClearUnknownDevices(); - void ClearDevices(); - - // preferences - nsresult OnDiscoveryChanged(bool aEnabled); - nsresult OnDiscoveryTimeoutChanged(uint32_t aTimeoutMs); - nsresult OnDiscoverableChanged(bool aEnabled); - nsresult OnServiceNameChanged(const nsACString& aServiceName); - - bool mInitialized = false; - nsWeakPtr mDeviceListener; - nsCOMPtr<nsIPresentationControlService> mPresentationService; - nsCOMPtr<nsIDNSServiceDiscovery> mMulticastDNS; - RefPtr<DNSServiceWrappedListener> mWrappedListener; - - nsCOMPtr<nsICancelable> mDiscoveryRequest; - nsCOMPtr<nsICancelable> mRegisterRequest; - - nsTArray<RefPtr<Device>> mDevices; - - bool mDiscoveryEnabled = false; - bool mIsDiscovering = false; - uint32_t mDiscoveryTimeoutMs; - nsCOMPtr<nsITimer> mDiscoveryTimer; - - bool mDiscoverable = false; - bool mDiscoverableEncrypted = false; - bool mIsServerRetrying = false; - uint32_t mServerRetryMs; - nsCOMPtr<nsITimer> mServerRetryTimer; - - nsCString mServiceName; - nsCString mRegisteredName; -}; - -} // namespace presentation -} // namespace dom -} // namespace mozilla - -#endif // mozilla_dom_presentation_provider_MulticastDNSDeviceProvider_h |