Repo created
This commit is contained in:
parent
81b91f4139
commit
f8c34fa5ee
22732 changed files with 4815320 additions and 2 deletions
75
TMessagesProj/jni/voip/webrtc/base/system/system_monitor.h
Normal file
75
TMessagesProj/jni/voip/webrtc/base/system/system_monitor.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef BASE_SYSTEM_SYSTEM_MONITOR_H_
|
||||
#define BASE_SYSTEM_SYSTEM_MONITOR_H_
|
||||
|
||||
#include "base/base_export.h"
|
||||
#include "base/macros.h"
|
||||
#include "base/memory/ref_counted.h"
|
||||
#include "base/observer_list_threadsafe.h"
|
||||
#include "build/build_config.h"
|
||||
|
||||
namespace base {
|
||||
|
||||
// Class for monitoring various system-related subsystems
|
||||
// such as power management, network status, etc.
|
||||
// TODO(mbelshe): Add support beyond just power management.
|
||||
class BASE_EXPORT SystemMonitor {
|
||||
public:
|
||||
// Type of devices whose change need to be monitored, such as add/remove.
|
||||
enum DeviceType {
|
||||
DEVTYPE_AUDIO, // Audio device, e.g., microphone.
|
||||
DEVTYPE_VIDEO_CAPTURE, // Video capture device, e.g., webcam.
|
||||
DEVTYPE_UNKNOWN, // Other devices.
|
||||
};
|
||||
|
||||
// Create SystemMonitor. Only one SystemMonitor instance per application
|
||||
// is allowed.
|
||||
SystemMonitor();
|
||||
~SystemMonitor();
|
||||
|
||||
// Get the application-wide SystemMonitor (if not present, returns NULL).
|
||||
static SystemMonitor* Get();
|
||||
|
||||
class BASE_EXPORT DevicesChangedObserver {
|
||||
public:
|
||||
// Notification that the devices connected to the system have changed.
|
||||
// This is only implemented on Windows currently.
|
||||
virtual void OnDevicesChanged(DeviceType device_type) {}
|
||||
|
||||
protected:
|
||||
virtual ~DevicesChangedObserver() = default;
|
||||
};
|
||||
|
||||
// Add a new observer.
|
||||
// Can be called from any thread.
|
||||
// Must not be called from within a notification callback.
|
||||
void AddDevicesChangedObserver(DevicesChangedObserver* obs);
|
||||
|
||||
// Remove an existing observer.
|
||||
// Can be called from any thread.
|
||||
// Must not be called from within a notification callback.
|
||||
void RemoveDevicesChangedObserver(DevicesChangedObserver* obs);
|
||||
|
||||
// The ProcessFoo() style methods are a broken pattern and should not
|
||||
// be copied. Any significant addition to this class is blocked on
|
||||
// refactoring to improve the state of affairs. See http://crbug.com/149059
|
||||
|
||||
// Cross-platform handling of a device change event.
|
||||
void ProcessDevicesChanged(DeviceType device_type);
|
||||
|
||||
private:
|
||||
// Functions to trigger notifications.
|
||||
void NotifyDevicesChanged(DeviceType device_type);
|
||||
|
||||
scoped_refptr<ObserverListThreadSafe<DevicesChangedObserver>>
|
||||
devices_changed_observer_list_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(SystemMonitor);
|
||||
};
|
||||
|
||||
} // namespace base
|
||||
|
||||
#endif // BASE_SYSTEM_SYSTEM_MONITOR_H_
|
||||
Loading…
Add table
Add a link
Reference in a new issue