IDS peak genericC++ v1.17.0
Loading...
Searching...
No Matches
peak_port_url.hpp
Go to the documentation of this file.
1
6
7#pragma once
8
10
13#include <peak/dll_interface/peak_dll_interface_util.hpp>
14
15#include <cstddef>
16#include <cstdint>
17#include <memory>
18#include <string>
19#include <vector>
20
21
22namespace peak
23{
24namespace core
25{
26
32enum class PortURLScheme
33{
37
38 Custom = 1000
39};
40
41class Port;
42
50{
51public:
52 PortURL() = delete;
53 ~PortURL() = default;
54 PortURL(const PortURL& other) = delete;
55 PortURL& operator=(const PortURL& other) = delete;
56 PortURL(PortURL&& other) = delete;
57 PortURL& operator=(PortURL&& other) = delete;
58
60 PEAK_COMMON_NO_DISCARD RawInformation Info(int32_t infoCommand) const;
61
71 PEAK_COMMON_NO_DISCARD std::string URL() const;
72
83
93 PEAK_COMMON_NO_DISCARD std::string FileName() const;
94
105
115 PEAK_COMMON_NO_DISCARD uint64_t FileSize() const;
116
126 PEAK_COMMON_NO_DISCARD std::vector<uint8_t> FileSHA1Hash() const;
127
138
149
160
171
182
192 PEAK_COMMON_NO_DISCARD std::shared_ptr<class Port> ParentPort() const;
193
194private:
195 friend ClassCreator<PortURL>;
196 explicit PortURL(PEAK_PORT_URL_HANDLE portUrlHandle, const std::weak_ptr<Port>& parentPort);
197 PEAK_PORT_URL_HANDLE m_backendHandle;
198
199 std::weak_ptr<Port> m_parentPort;
200};
201
202} /* namespace core */
203} /* namespace peak */
204
206
207
208/* Implementation */
209namespace peak
210{
211namespace core
212{
213
214inline PortURL::PortURL(PEAK_PORT_URL_HANDLE portUrlHandle, const std::weak_ptr<Port>& parentPort)
215 : m_backendHandle(portUrlHandle)
216 , m_parentPort(parentPort)
217{}
218
219inline RawInformation PortURL::Info(int32_t infoCommand) const
220{
221 return QueryRawInformationFromCInterfaceFunction([&](int32_t* dataType, uint8_t* buffer, size_t* bufferSize) {
222 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetInfo(m_backendHandle, infoCommand, dataType, buffer, bufferSize);
223 });
224}
225
226inline std::string PortURL::URL() const
227{
228 return QueryStringFromCInterfaceFunction([&](char* url, size_t* urlSize) {
229 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetURL(m_backendHandle, url, urlSize);
230 });
231}
232
234{
235 return static_cast<PortURLScheme>(
236 QueryNumericFromCInterfaceFunction<PEAK_PORT_URL_SCHEME>([&](PEAK_PORT_URL_SCHEME* scheme) {
237 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetScheme(m_backendHandle, scheme);
238 }));
239}
240
241inline std::string PortURL::FileName() const
242{
243 return QueryStringFromCInterfaceFunction([&](char* fileName, size_t* fileNameSize) {
244 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileName(m_backendHandle, fileName, fileNameSize);
245 });
246}
247
248inline uint64_t PortURL::FileRegisterAddress() const
249{
250 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* fileRegisterAddress) {
251 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileRegisterAddress(m_backendHandle, fileRegisterAddress);
252 });
253}
254
255inline uint64_t PortURL::FileSize() const
256{
257 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* fileSize) {
258 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileSize(m_backendHandle, fileSize);
259 });
260}
261
262inline std::vector<uint8_t> PortURL::FileSHA1Hash() const
263{
264 return QueryNumericArrayFromCInterfaceFunction<uint8_t>([&](uint8_t* fileSha1Hash, size_t* fileSha1HashSize) {
265 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileSHA1Hash(m_backendHandle, fileSha1Hash, fileSha1HashSize);
266 });
267}
268
269inline int32_t PortURL::FileVersionMajor() const
270{
271 return QueryNumericFromCInterfaceFunction<int32_t>([&](int32_t* fileVersionMajor) {
272 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileVersionMajor(m_backendHandle, fileVersionMajor);
273 });
274}
275
276inline int32_t PortURL::FileVersionMinor() const
277{
278 return QueryNumericFromCInterfaceFunction<int32_t>([&](int32_t* fileVersionMinor) {
279 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileVersionMinor(m_backendHandle, fileVersionMinor);
280 });
281}
282
283inline int32_t PortURL::FileVersionSubminor() const
284{
285 return QueryNumericFromCInterfaceFunction<int32_t>([&](int32_t* fileVersionSubminor) {
286 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileVersionSubminor(m_backendHandle, fileVersionSubminor);
287 });
288}
289
291{
292 return QueryNumericFromCInterfaceFunction<int32_t>([&](int32_t* fileSchemaVersionMajor) {
293 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileVersionMajor(m_backendHandle, fileSchemaVersionMajor);
294 });
295}
296
298{
299 return QueryNumericFromCInterfaceFunction<int32_t>([&](int32_t* fileSchemaVersionMinor) {
300 return PEAK_C_ABI_PREFIX PEAK_PortURL_GetFileVersionMinor(m_backendHandle, fileSchemaVersionMinor);
301 });
302}
303
304inline std::shared_ptr<Port> PortURL::ParentPort() const
305{
306 return m_parentPort.lock();
307}
308
309inline std::string ToString(PortURLScheme entry)
310{
311 std::string entryString;
312
313 if (entry == PortURLScheme::Local)
314 {
315 entryString = "Local";
316 }
317 else if (entry == PortURLScheme::HTTP)
318 {
319 entryString = "HTTP";
320 }
321 else if (entry == PortURLScheme::File)
322 {
323 entryString = "File";
324 }
325 else if (entry >= PortURLScheme::Custom)
326 {
327 entryString = "Custom";
328 }
329
330 return entryString;
331}
332
333} /* namespace core */
334} /* namespace peak */
PortURL(PortURL &&other)=delete
PEAK_COMMON_NO_DISCARD int32_t FileSchemaVersionMajor() const
Returns the file schema major version.
Definition peak_port_url.hpp:290
PortURL(const PortURL &other)=delete
PEAK_COMMON_NO_DISCARD int32_t FileSchemaVersionMinor() const
Returns the file schema minor version.
Definition peak_port_url.hpp:297
PEAK_COMMON_NO_DISCARD RawInformation Info(int32_t infoCommand) const
Delivers information based on the given GenTL info command.
Definition peak_port_url.hpp:219
PEAK_COMMON_NO_DISCARD std::string URL() const
Returns the URL.
Definition peak_port_url.hpp:226
PortURL & operator=(PortURL &&other)=delete
PEAK_COMMON_NO_DISCARD int32_t FileVersionMinor() const
Returns the file major version.
Definition peak_port_url.hpp:276
PEAK_COMMON_NO_DISCARD int32_t FileVersionMajor() const
Returns the file major version.
Definition peak_port_url.hpp:269
PEAK_COMMON_NO_DISCARD uint64_t FileRegisterAddress() const
Returns the file register address.
Definition peak_port_url.hpp:248
PEAK_COMMON_NO_DISCARD std::string FileName() const
Returns the file name.
Definition peak_port_url.hpp:241
PEAK_COMMON_NO_DISCARD uint64_t FileSize() const
Returns the file size.
Definition peak_port_url.hpp:255
PEAK_COMMON_NO_DISCARD int32_t FileVersionSubminor() const
Returns the file subminor version.
Definition peak_port_url.hpp:283
PEAK_COMMON_NO_DISCARD PortURLScheme Scheme() const
Returns the scheme.
Definition peak_port_url.hpp:233
PEAK_COMMON_NO_DISCARD std::vector< uint8_t > FileSHA1Hash() const
Returns the file SHA1 hash.
Definition peak_port_url.hpp:262
PEAK_COMMON_NO_DISCARD std::shared_ptr< class Port > ParentPort() const
Returns the parent port.
Definition peak_port_url.hpp:304
PortURL & operator=(const PortURL &other)=delete
@ File
Definition peak_buffer.hpp:45
@ Custom
Definition peak_buffer.hpp:54
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:32
std::string ToString(BufferPayloadType entry)
Definition peak_buffer.hpp:635
PortURLScheme
Possible URL schemes for the port.
Definition peak_port_url.hpp:33
@ File
Definition peak_port_url.hpp:36
@ HTTP
Definition peak_port_url.hpp:35
@ Local
Definition peak_port_url.hpp:34
@ Custom
Definition peak_port_url.hpp:38
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_buffer.hpp:29
PEAK_C_API PEAK_PortURL_GetScheme(PEAK_PORT_URL_HANDLE portUrlHandle, PEAK_PORT_URL_SCHEME *scheme)
Asks the given port URL for its scheme.
struct PEAK_PORT_URL * PEAK_PORT_URL_HANDLE
Definition peak_backend.h:471
PEAK_C_API PEAK_PortURL_GetURL(PEAK_PORT_URL_HANDLE portUrlHandle, char *url, size_t *urlSize)
Asks the given port URL for its URL string.
PEAK_C_API PEAK_PortURL_GetFileVersionMinor(PEAK_PORT_URL_HANDLE portUrlHandle, int32_t *fileVersionMinor)
Asks the given port URL for the minor component of its file version.
PEAK_C_API PEAK_PortURL_GetFileVersionMajor(PEAK_PORT_URL_HANDLE portUrlHandle, int32_t *fileVersionMajor)
Asks the given port URL for the major component of its file version.
PEAK_C_API PEAK_PortURL_GetFileName(PEAK_PORT_URL_HANDLE portUrlHandle, char *fileName, size_t *fileNameSize)
Asks the given port URL for its file name.
PEAK_C_API PEAK_PortURL_GetFileRegisterAddress(PEAK_PORT_URL_HANDLE portUrlHandle, uint64_t *fileRegisterAddress)
Asks the given port URL for its file register address.
int32_t PEAK_PORT_URL_SCHEME
Definition peak_backend.h:327
PEAK_C_API PEAK_PortURL_GetFileSize(PEAK_PORT_URL_HANDLE portUrlHandle, uint64_t *fileSize)
Asks the given port URL for its file size.
PEAK_C_API PEAK_PortURL_GetFileVersionSubminor(PEAK_PORT_URL_HANDLE portUrlHandle, int32_t *fileVersionSubminor)
Asks the given port URL for the subminor component of its file version.
PEAK_C_API PEAK_PortURL_GetInfo(PEAK_PORT_URL_HANDLE portUrlHandle, int32_t infoCommand, int32_t *infoDataType, uint8_t *info, size_t *infoSize)
Asks the given port URL for an information based on a specific command.
PEAK_C_API PEAK_PortURL_GetFileSHA1Hash(PEAK_PORT_URL_HANDLE portUrlHandle, uint8_t *fileSha1Hash, size_t *fileSha1HashSize)
Asks the given port URL for its file SHA1 hash.
#define PEAK_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13
The struct returned by all raw information functions.
Definition peak_common_structs.hpp:21