OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimStreamFactoryRegistry.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: MIT
4 //
5 // See LICENSE.txt file in the top level directory for more details.
6 //
7 // Author: Garrett Potts
8 //
9 //*******************************************************************
10 // $Id$
11 
12 #ifndef ossimStreamFactoryRegistry_HEADER
13 #define ossimStreamFactoryRegistry_HEADER 1
14 
16 #include <ossim/base/ossimRefPtr.h>
19 #include <ossim/base/ossimRegExp.h>
20 
21 #include <memory>
22 #include <vector>
23 #include <mutex>
24 #include <atomic>
25 namespace ossim
26 {
85  {
86  public:
87  static StreamFactoryRegistry* instance();
88  virtual ~StreamFactoryRegistry();
89 
97  void registerFactory(StreamFactoryBase* factory);
98 
103  void unregisterFactory(StreamFactoryBase* factory);
104 
117  virtual std::shared_ptr<ossim::istream>
118  createIstream(const std::string& connectionString,
119  const ossimKeywordlist& options=ossimKeywordlist(),
120  std::ios_base::openmode mode=
121  std::ios_base::in|std::ios_base::binary) const;
122 
135  virtual std::shared_ptr<ossim::ostream>
136  createOstream(const std::string& connectionString,
137  const ossimKeywordlist& options=ossimKeywordlist(),
138  std::ios_base::openmode mode=
139  std::ios_base::out|std::ios_base::binary) const;
140 
153  virtual std::shared_ptr<ossim::iostream>
154  createIOstream(const std::string& connectionString,
155  const ossimKeywordlist& options=ossimKeywordlist(),
156  std::ios_base::openmode mode=
157  std::ios_base::in|std::ios_base::out|std::ios_base::binary) const;
158 
163  bool exists(const std::string& connectionString) const;
164 
172  virtual bool exists(const std::string& connectionString,
173  bool& continueFlag) const;
174 
179  void loadPreferences();
180 
181  protected:
183 
184  private:
185 
191  class BufferInfo{
192  public:
193  BufferInfo():m_enabled(false),
194  m_enableBlocked(false),
195  m_pattern(""),
196  m_size(4096){}
197  bool m_enabled;
201 
202  };
205 
211  bool getBufferInfo(BufferInfo& bufferInfo,
212  const ossimString& connectionString)const;
213 
214  std::vector<StreamFactoryBase*> m_factoryList;
215  std::vector<BufferInfo> m_bufferInfoList;
218  mutable std::mutex m_mutex;
219  };
220 
221 } // End: namespace ossim
222 
223 #endif
Represents serializable keyword/value map.
This code was derived from https://gist.github.com/mshockwave.
Definition: Barrier.h:8
std::vector< BufferInfo > m_bufferInfoList
static StreamFactoryRegistry * m_instance
This is an internal class used to store the buffer information loaded from the preferences.
unsigned long long ossim_uint64
This is a generic stream registry.
#define OSSIM_DLL
std::vector< StreamFactoryBase * > m_factoryList