OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Attributes | List of all members
ossim::StreamFactory Class Reference

#include <ossimStreamFactory.h>

Inheritance diagram for ossim::StreamFactory:
ossim::StreamFactoryBase

Public Member Functions

virtual ~StreamFactory ()
 
virtual std::shared_ptr< ossim::istreamcreateIstream (const std::string &connectionString, const ossimKeywordlist &options=ossimKeywordlist(), std::ios_base::openmode mode=std::ios_base::in|std::ios_base::binary) const
 
virtual std::shared_ptr< ossim::ostreamcreateOstream (const std::string &connectionString, const ossimKeywordlist &options=ossimKeywordlist(), std::ios_base::openmode mode=std::ios_base::out|std::ios_base::binary) const
 
virtual std::shared_ptr< ossim::iostreamcreateIOstream (const std::string &connectionString, const ossimKeywordlist &options=ossimKeywordlist(), std::ios_base::openmode mode=std::ios_base::in|std::ios_base::out|std::ios_base::binary) const
 
virtual bool exists (const std::string &connectionString, bool &continueFlag) const
 Methods to test if connection exists. More...
 
- Public Member Functions inherited from ossim::StreamFactoryBase
virtual ~StreamFactoryBase ()
 

Static Public Member Functions

static StreamFactoryinstance ()
 

Protected Member Functions

 StreamFactory ()
 
 StreamFactory (const StreamFactory &)
 

Static Protected Attributes

static StreamFactorym_instance = 0
 

Detailed Description

Definition at line 22 of file ossimStreamFactory.h.

Constructor & Destructor Documentation

◆ ~StreamFactory()

ossim::StreamFactory::~StreamFactory ( )
virtual

Definition at line 33 of file ossimStreamFactory.cpp.

34 {
35 }

◆ StreamFactory() [1/2]

ossim::StreamFactory::StreamFactory ( )
protected

Definition at line 139 of file ossimStreamFactory.cpp.

140 {
141 }

◆ StreamFactory() [2/2]

ossim::StreamFactory::StreamFactory ( const StreamFactory )
protected

Definition at line 144 of file ossimStreamFactory.cpp.

145 {
146 }

Member Function Documentation

◆ createIOstream()

std::shared_ptr< ossim::iostream > ossim::StreamFactory::createIOstream ( const std::string &  connectionString,
const ossimKeywordlist options = ossimKeywordlist(),
std::ios_base::openmode  mode = std::ios_base::in|std::ios_base::out|std::ios_base::binary 
) const
virtual

Implements ossim::StreamFactoryBase.

Definition at line 94 of file ossimStreamFactory.cpp.

98 {
99  return std::shared_ptr<ossim::iostream>(0);
100 }

◆ createIstream()

std::shared_ptr< ossim::istream > ossim::StreamFactory::createIstream ( const std::string &  connectionString,
const ossimKeywordlist options = ossimKeywordlist(),
std::ios_base::openmode  mode = std::ios_base::in|std::ios_base::binary 
) const
virtual

Implements ossim::StreamFactoryBase.

Definition at line 46 of file ossimStreamFactory.cpp.

References ossimFilename::exists().

50 {
51  std::shared_ptr<ossim::istream> result(0);
52  ossimFilename f = connectionString;
53  if ( f.exists() )
54  {
55  // there is a bug in gcc < 5.0 and we can't use constructors in the
56  // C++11 build. Will refactor to do a new ifstream then use open
57  //
58  std::shared_ptr<ossim::ifstream> testResult =
59  std::make_shared<ossim::ifstream>();
60  testResult->open(connectionString.c_str(), mode);
61  if(!testResult->is_open())
62  {
63  testResult.reset();
64  }
65 
66  result = testResult;
67  }
68 
69  return result;
70 }
bool exists() const

◆ createOstream()

std::shared_ptr< ossim::ostream > ossim::StreamFactory::createOstream ( const std::string &  connectionString,
const ossimKeywordlist options = ossimKeywordlist(),
std::ios_base::openmode  mode = std::ios_base::out|std::ios_base::binary 
) const
virtual

Implements ossim::StreamFactoryBase.

Definition at line 72 of file ossimStreamFactory.cpp.

76 {
77  std::shared_ptr<ossim::ostream> result(0);
78 
79  std::shared_ptr<ossim::ofstream> testResult =
80  std::make_shared<ossim::ofstream>();
81  testResult->open(connectionString.c_str(), mode);
82  if ( testResult->is_open() )
83  {
84  result = testResult;
85  }
86  else
87  {
88  testResult.reset();
89  }
90 
91  return result;
92 }

◆ exists()

bool ossim::StreamFactory::exists ( const std::string &  connectionString,
bool &  continueFlag 
) const
virtual

Methods to test if connection exists.

Parameters
connectionString
continueFlagInitializes by this, if set to false, indicates factory handles file/url and no more factory checks are necessary. If true, connection is not handled by this factory.
Returns
true on success, false, if not.

Implements ossim::StreamFactoryBase.

Definition at line 102 of file ossimStreamFactory.cpp.

References ossimString::downcase(), ossimFilename::OSSIM_EXIST, and ossimString::substr().

103 {
104  bool result = false;
105  if ( connectionString.size() )
106  {
107  std::string file;
108  std::size_t pos = connectionString.find( "://" );
109  if ( pos != std::string::npos )
110  {
111  // is url:
112  ossimString protocol = connectionString.substr( 0, pos );
113  if ( (protocol.downcase() == "file") && ( connectionString.size() > pos+3) )
114  {
115  // Strip off "file://" for access(...) function:
116  file = connectionString.substr( pos+3 );
117  }
118  }
119  else // not a url
120  {
121  file = connectionString;
122  }
123 
124  if ( file.size() )
125  {
126  // Set continueFlag to false to stop downstream factory exists checks.
127  continueFlag = false;
128 #if defined(_WIN32)
129  result = (_access(file.c_str(), ossimFilename::OSSIM_EXIST) == 0);
130 #else
131  result = ((access(file.c_str(), ossimFilename::OSSIM_EXIST)) == 0);
132 #endif
133  }
134  }
135  return result;
136 }
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
std::string substr(std::string::size_type pos=0, std::string::size_type n=std::string::npos) const
Equivalent to basic_string(*this, pos, n).
Definition: ossimString.h:910

◆ instance()

ossim::StreamFactory * ossim::StreamFactory::instance ( )
static

Definition at line 37 of file ossimStreamFactory.cpp.

38 {
39  if(!m_instance)
40  {
42  }
43  return m_instance;
44 }
static StreamFactory * m_instance

Member Data Documentation

◆ m_instance

ossim::StreamFactory * ossim::StreamFactory::m_instance = 0
staticprotected

Definition at line 65 of file ossimStreamFactory.h.


The documentation for this class was generated from the following files: