Skip to content

Commit

Permalink
[ios/networking] - added seperate network implemenation for ios (stri…
Browse files Browse the repository at this point in the history
…pped out of NetworkLinux and adapted for ios)
  • Loading branch information
fuzzard committed Sep 25, 2019
1 parent f95ee82 commit 8980ba6
Show file tree
Hide file tree
Showing 11 changed files with 733 additions and 68 deletions.
4 changes: 2 additions & 2 deletions cmake/scripts/darwin_embedded/ArchSetup.cmake
Expand Up @@ -27,7 +27,7 @@ else()
endif()

# Additional SYSTEM_DEFINES
list(APPEND SYSTEM_DEFINES -DHAS_LINUX_NETWORK -DHAS_ZEROCONF)
list(APPEND SYSTEM_DEFINES -DHAS_IOS_NETWORK -DHAS_ZEROCONF)

list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${NATIVEPREFIX})

Expand All @@ -37,7 +37,7 @@ list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo"
"-framework CFNetwork" "-framework CoreGraphics"
"-framework Foundation" "-framework UIKit"
"-framework CoreMedia" "-framework AVFoundation"
"-framework VideoToolbox")
"-framework VideoToolbox" "-lresolv")

set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE)

Expand Down
2 changes: 1 addition & 1 deletion cmake/treedata/darwin_embedded/subdirs.txt
Expand Up @@ -2,9 +2,9 @@ xbmc/input/touch input/touch
xbmc/input/touch/generic input/touch/generic
xbmc/platform/darwin platform/darwin
xbmc/platform/darwin/ios-common platform/ios-common
xbmc/platform/darwin/ios-common/network platform/ios-common/network
xbmc/platform/darwin/network platform/darwin/network
xbmc/platform/darwin/storage platform/storage
xbmc/platform/posix posix
xbmc/platform/posix/filesystem platform/posix/filesystem
xbmc/platform/posix/network platform/posix/network
xbmc/platform/posix/utils platform/posix/utils
2 changes: 2 additions & 0 deletions xbmc/network/Network.h
Expand Up @@ -120,6 +120,8 @@ class CNetworkBase
#include "platform/win32/network/NetworkWin32.h"
#elif defined(HAS_WIN10_NETWORK)
#include "platform/win10/network/NetworkWin10.h"
#elif defined(HAS_IOS_NETWORK)
#include "platform/darwin/ios-common/network/NetworkIOS.h"
#else
using CNetwork = CNetworkBase;
#endif
Expand Down
6 changes: 6 additions & 0 deletions xbmc/platform/darwin/ios-common/network/CMakeLists.txt
@@ -0,0 +1,6 @@
set(SOURCES NetworkIOS.mm)

set(HEADERS NetworkIOS.h
route.h)

core_add_library(platform_ios_network)
68 changes: 68 additions & 0 deletions xbmc/platform/darwin/ios-common/network/NetworkIOS.h
@@ -0,0 +1,68 @@
/*
* Copyright (C) 2005-2018 Team Kodi
* This file is part of Kodi - https://kodi.tv
*
* SPDX-License-Identifier: GPL-2.0-or-later
* See LICENSES/README.md for more information.
*/

#pragma once

#include "network/Network.h"

#include <string>
#include <vector>

class CNetworkIOS;

class CNetworkInterfaceIOS : public CNetworkInterface
{
public:
CNetworkInterfaceIOS(CNetworkIOS* network, std::string interfaceName);
~CNetworkInterfaceIOS() override;

bool IsEnabled() const override;
bool IsConnected() const override;

std::string GetMacAddress() const override;
void GetMacAddressRaw(char rawMac[6]) const override;

bool GetHostMacAddress(unsigned long host, std::string& mac) const override;

std::string GetCurrentIPAddress() const override;
std::string GetCurrentNetmask() const override;
std::string GetCurrentDefaultGateway() const override;

std::string GetInterfaceName() const;

private:
std::string m_interfaceName;
CNetworkIOS* m_network;
};

class CNetworkIOS : public CNetworkBase
{
public:
CNetworkIOS();
~CNetworkIOS() override;

// Return the list of interfaces
std::vector<CNetworkInterface*>& GetInterfaceList() override;
CNetworkInterface* GetFirstConnectedInterface() override;

// Ping remote host
bool PingHost(unsigned long host, unsigned int timeout_ms = 2000) override;

// Get/set the nameserver(s)
std::vector<std::string> GetNameServers() override;

friend class CNetworkInterfaceIOS;

private:
int GetSocket() { return m_sock; }
void queryInterfaceList();
std::vector<CNetworkInterface*> m_interfaces;
int m_sock;
};

using CNetwork = CNetworkIOS;

0 comments on commit 8980ba6

Please sign in to comment.