nx_cloud_storage_sdk  1.0
Cloud Storage SDK
i_device_agent.h
1 // Copyright 2018-present Network Optix, Inc. Licensed under MPL 2.0: www.mozilla.org/MPL/2.0/
2 
3 #pragma once
4 
5 #include <nx/sdk/cloud_storage/i_codec_info.h>
6 #include <nx/sdk/cloud_storage/i_stream_reader.h>
7 #include <nx/sdk/cloud_storage/i_stream_writer.h>
8 #include <nx/sdk/i_device_info.h>
9 #include <nx/sdk/i_list.h>
10 #include <nx/sdk/i_plugin.h>
11 #include <nx/sdk/i_string.h>
12 #include <nx/sdk/interface.h>
13 #include <nx/sdk/result.h>
14 
15 namespace nx::sdk::cloud_storage {
16 
21 class IDeviceAgent: public Interface<IDeviceAgent>
22 {
23 public:
24  static constexpr auto interfaceId() { return makeId("nx::sdk::archive::IDevice"); }
25 
27  protected: virtual void getDeviceInfo(Result<const IDeviceInfo*>* outResult) const = 0;
28  public: virtual Result<const IDeviceInfo*> deviceInfo() const
29  {
31  getDeviceInfo(&result);
32  return result;
33  }
34 
35  protected: virtual void doCreateStreamWriter(
37  int64_t startTimeUs,
38  const IList<ICodecInfo>* codecInfoList,
39  const char* opaqueMetadata,
40  Result<IStreamWriter*>* outResult) = 0;
41 
54  int64_t startTimeMs,
55  const IList<ICodecInfo>* codecInfoList,
56  const char* opaqueMetadata)
57  {
59  doCreateStreamWriter(quality, startTimeMs, codecInfoList, opaqueMetadata, &result);
60  return result;
61  }
62 
63  protected: virtual void doCreateStreamReader(
65  int64_t startTimeUs,
66  int64_t durationUs,
67  Result<IStreamReader*>* outResult) = 0;
68 
77  int64_t startTimeMs,
78  int64_t durationMs)
79  {
81  doCreateStreamReader(quality, startTimeMs, durationMs, &result);
82  return result;
83  }
84 };
85 
86 } // namespace nx::sdk::cloud_storage
Definition: interface.h:48
Result< IStreamWriter * > createStreamWriter(nxcip::MediaStreamQuality quality, int64_t startTimeMs, const IList< ICodecInfo > *codecInfoList, const char *opaqueMetadata)
Definition: i_device_agent.h:52
virtual void getDeviceInfo(Result< const IDeviceInfo *> *outResult) const =0
Definition: i_device_agent.h:21
Definition: result.h:48
Definition: algorithm.cpp:8
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:76
Result< IStreamReader * > createStreamReader(nxcip::MediaStreamQuality quality, int64_t startTimeMs, int64_t durationMs)
Definition: i_device_agent.h:75
MediaStreamQuality
Definition: camera_plugin.h:1177
Definition: i_list.h:10