nx_storage_sdk  1.0
Storage SDK
test_storage_factory.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 <unordered_set>
6 #include <string>
7 #include <mutex>
8 #include <storage/third_party_storage.h>
9 #include <common.h>
10 #include <vfs.h>
11 #include <url.h>
12 
13 // {2E2C7A3D-256D-4018-B40E-512D72510BEC}
14 static const nxpl::NX_GUID IID_StorageFactory =
15 { { 0x2e, 0x2c, 0x7a, 0x3d, 0x25, 0x6d, 0x40, 0x18, 0xb4, 0xe, 0x51, 0x2d, 0x72, 0x51, 0xb, 0xec } };
16 
17 class NX_PLUGIN_API TestStorageFactory :
19  public PluginRefCounter<TestStorageFactory>
20 {
21 public:
22  virtual const char** STORAGE_METHOD_CALL findAvailable() const override;
23 
24  virtual nx_spl::Storage* STORAGE_METHOD_CALL createStorage(
25  const char* url,
26  int* ecode
27  ) override;
28 
29  virtual const char* STORAGE_METHOD_CALL storageType() const override;
30 
31  virtual const char* lastErrorMessage(int ecode) const override;
32 
33 public: // plugin interface implementation
34  virtual void* queryInterface(const nxpl::NX_GUID& interfaceID) override;
35 
36  virtual int addRef() const override;
37  virtual int releaseRef() const override;
38 
39 private:
40  virtual bool readConfig(const std::string& path, std::string* outContent);
41  virtual nx_spl::Storage* createStorageImpl(const utils::VfsPair& vfsPair, const utils::Url&);
42 
43 protected:
44  std::unordered_set<std::string> m_storageHosts;
45  std::mutex m_storageHostsMutex;
46 };
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.
Storage factory abstraction.
Definition: third_party_storage.h:272
Definition: url.h:16
Definition: test_storage_factory.h:17
GUID of plugin interface.
Definition: plugin_api.h:26
Storage abstraction.
Definition: third_party_storage.h:154
virtual const char *STORAGE_METHOD_CALL storageType() const =0
virtual const char * lastErrorMessage(int ecode) const =0
Definition: vfs.h:16
virtual int releaseRef() const =0
Decrement reference counter.
virtual const char **STORAGE_METHOD_CALL findAvailable() const =0
virtual Storage *STORAGE_METHOD_CALL createStorage(const char *url, int *ecode)=0