summaryrefslogtreecommitdiffstats
path: root/dom/presentation/provider/MulticastDNSDeviceProvider.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/presentation/provider/MulticastDNSDeviceProvider.h')
-rw-r--r--dom/presentation/provider/MulticastDNSDeviceProvider.h225
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