IDS peak genericC++ v1.12.0
Loading...
Searching...
No Matches
peak_remote_device.hpp
Go to the documentation of this file.
1
10
11#pragma once
12
13
16#include <peak/dll_interface/peak_dll_interface_util.hpp>
17
18#include <memory>
19
20
21namespace peak
22{
23namespace core
24{
25
26class Device;
27
36class RemoteDevice : public Module
37{
38public:
39 RemoteDevice() = delete;
40 ~RemoteDevice() override = default;
41 RemoteDevice(const class RemoteDevice& other) = delete;
42 RemoteDevice& operator=(const class RemoteDevice& other) = delete;
43 RemoteDevice(class RemoteDevice&& other) = delete;
44 RemoteDevice& operator=(class RemoteDevice&& other) = delete;
45
55 std::shared_ptr<Device> LocalDevice() const;
56
57private:
58 friend ClassCreator<RemoteDevice>;
59 RemoteDevice(PEAK_REMOTE_DEVICE_HANDLE remoteDeviceHandle, const std::weak_ptr<Device>& localDevice);
60 PEAK_MODULE_HANDLE ModuleHandle() const override;
61
62 PEAK_REMOTE_DEVICE_HANDLE m_backendHandle;
63
64 std::weak_ptr<Device> m_localDevice;
65};
66
67} /* namespace core */
68} /* namespace peak */
69
70/* Implementation */
71namespace peak
72{
73namespace core
74{
75
77 PEAK_REMOTE_DEVICE_HANDLE remoteDeviceHandle, const std::weak_ptr<Device>& localDevice)
78 : m_backendHandle(remoteDeviceHandle)
79 , m_localDevice(localDevice)
80{}
81
82inline std::shared_ptr<Device> RemoteDevice::LocalDevice() const
83{
84 return LockOrThrow(m_localDevice);
85}
86
87inline PEAK_MODULE_HANDLE RemoteDevice::ModuleHandle() const
88{
89 auto moduleHandle = QueryNumericFromCInterfaceFunction<PEAK_MODULE_HANDLE>(
90 [&](PEAK_MODULE_HANDLE* _moduleHandle) {
91 return PEAK_C_ABI_PREFIX PEAK_RemoteDevice_ToModule(m_backendHandle, _moduleHandle);
92 });
93
94 return moduleHandle;
95}
96
97} /* namespace core */
98} /* namespace peak */
Represents a GenTL Device module, i.e. a local virtual Device proxy for the actual hardware RemoteDev...
Definition peak_device.hpp:55
RemoteDevice(class RemoteDevice &&other)=delete
RemoteDevice & operator=(const class RemoteDevice &other)=delete
~RemoteDevice() override=default
RemoteDevice(const class RemoteDevice &other)=delete
RemoteDevice & operator=(class RemoteDevice &&other)=delete
std::shared_ptr< Device > LocalDevice() const
Returns the local device (device proxy) of the remote device.
Definition peak_remote_device.hpp:82
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:34
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_dynamic_loader.h:33
struct PEAK_MODULE * PEAK_MODULE_HANDLE
Definition peak_backend.h:421
struct PEAK_REMOTE_DEVICE * PEAK_REMOTE_DEVICE_HANDLE
Definition peak_backend.h:393
PEAK_C_API PEAK_RemoteDevice_ToModule(PEAK_REMOTE_DEVICE_HANDLE remoteDeviceHandle, PEAK_MODULE_HANDLE *moduleHandle)
Casts the given remote device to a module.
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:16