[Windows] Remove redundant DirectSound error codes
[xbmc.git] / xbmc / platform / android / network / ZeroconfBrowserAndroid.h
blobd44535699b69056ca3e0b950d8e22aeac17b2074
1 /*
2 * Copyright (C) 2017 Christian Browet
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #pragma once
11 #include "network/ZeroconfBrowser.h"
12 #include "threads/Event.h"
14 #include "platform/android/activity/JNIXBMCNsdManagerDiscoveryListener.h"
15 #include "platform/android/activity/JNIXBMCNsdManagerResolveListener.h"
17 #include <androidjni/NsdManager.h>
18 #include <androidjni/NsdServiceInfo.h>
20 class CZeroconfBrowserAndroid;
22 class CZeroconfBrowserAndroidDiscover : public jni::CJNIXBMCNsdManagerDiscoveryListener
24 public:
25 explicit CZeroconfBrowserAndroidDiscover(CZeroconfBrowserAndroid* browser);
26 bool IsActive() { return m_isActive; }
28 // CJNINsdManagerDiscoveryListener interface
29 public:
30 void onDiscoveryStarted(const std::string& serviceType) override;
31 void onDiscoveryStopped(const std::string& serviceType) override;
32 void onServiceFound(const jni::CJNINsdServiceInfo& serviceInfo) override;
33 void onServiceLost(const jni::CJNINsdServiceInfo& serviceInfo) override;
34 void onStartDiscoveryFailed(const std::string& serviceType, int errorCode) override;
35 void onStopDiscoveryFailed(const std::string& serviceType, int errorCode) override;
37 protected:
38 CZeroconfBrowserAndroid* m_browser;
39 bool m_isActive = false;
42 class CZeroconfBrowserAndroidResolve : public jni::CJNIXBMCNsdManagerResolveListener
44 public:
45 CZeroconfBrowserAndroidResolve();
47 // CJNINsdManagerResolveListener interface
48 public:
49 void onResolveFailed(const jni::CJNINsdServiceInfo& serviceInfo, int errorCode) override;
50 void onServiceResolved(const jni::CJNINsdServiceInfo& serviceInfo) override;
52 CEvent m_resolutionDone;
53 int m_errorCode;
54 jni::CJNINsdServiceInfo m_retServiceInfo;
57 class CZeroconfBrowserAndroid : public CZeroconfBrowser
59 friend class CZeroconfBrowserAndroidDiscover;
61 public:
62 CZeroconfBrowserAndroid();
63 ~CZeroconfBrowserAndroid() override;
65 // CZeroconfBrowser interface
66 protected:
67 bool doAddServiceType(const std::string& fcr_service_type) override;
68 bool doRemoveServiceType(const std::string& fcr_service_type) override;
69 std::vector<ZeroconfService> doGetFoundServices() override;
70 bool doResolveService(ZeroconfService& fr_service, double f_timeout) override;
72 void addDiscoveredService(CZeroconfBrowserAndroidDiscover* browser, const CZeroconfBrowser::ZeroconfService& fcr_service);
73 void removeDiscoveredService(CZeroconfBrowserAndroidDiscover* browser, const CZeroconfBrowser::ZeroconfService& fcr_service);
75 private:
76 jni::CJNINsdManager m_manager;
78 //shared variables (with guard)
79 CCriticalSection m_data_guard;
80 typedef std::map<std::string, CZeroconfBrowserAndroidDiscover*> tBrowserMap;
81 // tBrowserMap maps service types the corresponding browser
82 tBrowserMap m_service_browsers;
83 //tDiscoveredServicesMap maps browsers to their discovered services + a ref-count for each service
84 //ref-count is needed, because a service might pop up more than once, if there's more than one network-iface
85 typedef std::map<CZeroconfBrowserAndroidDiscover*, std::vector<std::pair<ZeroconfService, unsigned int> > > tDiscoveredServicesMap;
86 tDiscoveredServicesMap m_discovered_services;