mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
* Add network status check for AWG/WG protocol * Use service for PingSender * Cleanup unused code * Use networkchecker for all protocols * fix android build * add delay for ping checker stop * handle for interafe problems on windows * Restart IpcClient after OS suspend * Add DBus network checker for Linux * Use ping check for tun interfce * Windows suspend mode handler * MacOS suspend mode handler draft * Add delay for Linux wakeup reconnect * Add delay for Linux wakeup reconnect * Fix macOS wakeup/sleep prob Fix macOS not receiving wakeup/sleep events * fix done * Update deploy.yml fix CICD * Update vpnconnection.cpp update fix build CICD * Update vpnconnection.cpp update fix build cicd macos * Update deploy.yml fix CICD build macos * Update deploy.yml fix CICD macos * feat: implement SCP write buffer, improve network check and refactor macOS OpenGL support * feat: add tunnel addresses updated signal and handle network check based on gateway and local address availability * refactor: improve IpcClient connection handling and instance management * fix: scp revert. * fix: cmake reverted. * fix: submodules updated --------- Co-authored-by: Mykola Baibuz <mykola.baibuz@gmail.com> Co-authored-by: Yaroslav Yashin <yaroslav.yashin@gmail.com> Co-authored-by: vkamn <vk@amnezia.org>
55 lines
1.6 KiB
Objective-C
55 lines
1.6 KiB
Objective-C
/* 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 MACOSNETWORKWATCHER_H
|
|
#define MACOSNETWORKWATCHER_H
|
|
|
|
#import <Network/Network.h>
|
|
|
|
#include "../ios/iosnetworkwatcher.h"
|
|
#include "networkwatcherimpl.h"
|
|
|
|
#include <IOKit/pwr_mgt/IOPMLib.h>
|
|
#include <IOKit/IOMessage.h>
|
|
|
|
|
|
class QString;
|
|
|
|
// Inspired by https://ladydebug.com/blog/2020/05/21/programmatically-capture-energy-saver-event-on-mac/
|
|
class PowerNotificationsListener
|
|
{
|
|
public:
|
|
PowerNotificationsListener(class MacOSNetworkWatcher* watcher) : m_watcher(watcher) {}
|
|
void registerForNotifications();
|
|
void cleanup();
|
|
|
|
private:
|
|
static void sleepWakeupCallBack(void *refParam, io_service_t service, natural_t messageType, void *messageArgument);
|
|
|
|
private:
|
|
class MacOSNetworkWatcher* m_watcher = nullptr;
|
|
IONotificationPortRef notifyPortRef = nullptr; // notification port allocated by IORegisterForSystemPower
|
|
io_object_t notifierObj = IO_OBJECT_NULL; // notifier object, used to deregister later
|
|
io_connect_t rootPowerDomain = IO_OBJECT_NULL; // a reference to the Root Power Domain IOService
|
|
};
|
|
|
|
|
|
class MacOSNetworkWatcher final : public IOSNetworkWatcher {
|
|
public:
|
|
MacOSNetworkWatcher(QObject* parent);
|
|
~MacOSNetworkWatcher();
|
|
|
|
void start() override;
|
|
|
|
void checkInterface();
|
|
|
|
void controllerStateChanged();
|
|
|
|
private:
|
|
void* m_delegate = nullptr;
|
|
PowerNotificationsListener m_powerlistener;
|
|
};
|
|
|
|
#endif // MACOSNETWORKWATCHER_H
|