michangarrito/apps/backend/node_modules/@react-native-community/netinfo/windows/RNCNetInfoCPP/RNCNetInfo.h
rckrdmrd 97f407c661 [MIGRATION-V2] feat: Migrar michangarrito a estructura v2
- Prefijo v2: MCH
- TRACEABILITY-MASTER.yml creado
- Listo para integracion como submodulo

Workspace: v2.0.0 | SIMCO: v4.0.0
2026-01-10 11:28:54 -06:00

87 lines
2.8 KiB
C++

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#pragma once
#include <functional>
#include <future>
#include <winrt/Microsoft.ReactNative.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Networking.Connectivity.h>
#include "NativeModules.h"
namespace winrt::ReactNativeNetInfo::implementation {
REACT_STRUCT(NetInfoDetails);
struct NetInfoDetails {
REACT_FIELD(isConnectionExpensive);
bool isConnectionExpensive;
REACT_FIELD(cellularGeneration);
std::optional<std::string> cellularGeneration;
REACT_FIELD(wifiGeneration);
std::optional<std::string> wifiGeneration;
REACT_FIELD(ssid);
std::optional<std::string> ssid;
REACT_FIELD(bssid);
std::optional<std::string> bssid;
REACT_FIELD(strength);
std::optional<int> strength;
REACT_FIELD(frequency);
std::optional<int> frequency;
};
REACT_STRUCT(NetInfoState);
struct NetInfoState {
/// <summary>
/// The type of the active network connection
/// </summary>
/// <param name=""></param>
REACT_FIELD(type);
std::string type;
/// <summary>
/// Is there an active network connection
/// </summary>
/// <param name=""></param>
REACT_FIELD(isConnected);
bool isConnected;
/// <summary>
/// IP Address of the current connection if available
/// </summary>
/// <param name=""></param>
REACT_FIELD(ipAddress);
std::string ipAddress;
/// <summary>
/// Is the internet reachable with the active network
/// </summary>
/// <param name=""></param>
REACT_FIELD(isInternetReachable);
std::optional<bool> isInternetReachable;
REACT_FIELD(details);
std::optional<NetInfoDetails> details;
};
REACT_MODULE(RNCNetInfo);
struct RNCNetInfo {
public:
REACT_INIT(Initialize);
void Initialize(winrt::Microsoft::ReactNative::ReactContext const& reactContext) noexcept;
REACT_METHOD(getCurrentState);
winrt::fire_and_forget getCurrentState(std::string requestedInterface, winrt::Microsoft::ReactNative::ReactPromise<NetInfoState> promise) noexcept;
REACT_EVENT(NetworkStatusChanged, L"netInfo.networkStatusDidChange");
std::function<void(NetInfoState)> NetworkStatusChanged;
static std::future<NetInfoState> GetNetworkStatus(std::string const& requestedInterface = "");
private:
winrt::Windows::Networking::Connectivity::NetworkInformation::NetworkStatusChanged_revoker m_networkStatusChangedRevoker{};
};
}