nx_storage_sdk  1.0
Storage SDK
test_io_device.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 <string>
6 #include <storage/third_party_storage.h>
7 #include <common.h>
8 #include <detail/fs_stub.h>
9 
10 
11 enum class FileCategory
12 {
13  media,
14  db,
15  infoTxt
16 };
17 
18 class NX_PLUGIN_API TestIODevice :
19  public nx_spl::IODevice,
20  public PluginRefCounter<TestIODevice>
21 {
22 public:
23  TestIODevice(const std::string& name, FileCategory category,
24  int mode, int64_t size = 0, FILE* f = nullptr);
25  ~TestIODevice();
26 public:
27  virtual uint32_t STORAGE_METHOD_CALL write(
28  const void* src,
29  const uint32_t size,
30  int* ecode
31  ) override;
32 
33  virtual uint32_t STORAGE_METHOD_CALL read(
34  void* dst,
35  const uint32_t size,
36  int* ecode
37  ) const override;
38 
39  virtual int STORAGE_METHOD_CALL getMode() const override;
40 
41  virtual uint32_t STORAGE_METHOD_CALL size(int* ecode) const override;
42 
43  virtual int STORAGE_METHOD_CALL seek(
44  uint64_t pos,
45  int* ecode
46  ) override;
47 
48 public: // plugin interface implementation
49  virtual void* queryInterface(const nxpl::NX_GUID& interfaceID) override;
50 
51  virtual int addRef() const override;
52  virtual int releaseRef() const override;
53 
54 private:
55  virtual uint32_t readImpl(void* dst, uint32_t size, int* ecode) const;
56  virtual int seekImpl(uint64_t pos, int* ecode);
57 
58 protected:
59  const std::string m_sampleFileName;
60 
61 private:
62  FileCategory m_category;
63  int m_mode;
64  int64_t m_size;
65  FILE* m_file;
66  mutable int m_camInfoPos;
67 };
virtual int addRef() const =0
Increment reference counter.
Definition: common.h:14
virtual void * queryInterface(const nxpl::NX_GUID &interfaceID)=0
Cast to type, specified by interfaceID.
virtual int STORAGE_METHOD_CALL getMode() const =0
GUID of plugin interface.
Definition: plugin_api.h:26
virtual uint32_t STORAGE_METHOD_CALL read(void *dst, const uint32_t size, int *ecode) const =0
Definition: test_io_device.h:18
virtual int STORAGE_METHOD_CALL seek(uint64_t pos, int *ecode)=0
virtual uint32_t STORAGE_METHOD_CALL size(int *ecode) const =0
virtual int releaseRef() const =0
Decrement reference counter.
virtual uint32_t STORAGE_METHOD_CALL write(const void *src, const uint32_t size, int *ecode)=0
IO device abstraction.
Definition: third_party_storage.h:73