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

#include <ossimCurlStreamBuffer.h>

Inheritance diagram for ossim::CurlStreamBuffer:

Public Member Functions

 CurlStreamBuffer (ossim_int64 blockSize=ossim::CurlStreamDefaults::m_readBlocksize)
 
CurlStreamBufferopen (const char *connectionString, const ossimKeywordlist &options, std::ios_base::openmode mode)
 
CurlStreamBufferopen (const std::string &connectionString, const ossimKeywordlist &options, std::ios_base::openmode mode)
 
bool is_open () const
 
virtual ~CurlStreamBuffer ()
 
ossim_int64 getFileSize () const
 
ossim_uint64 getBlockSize () const
 

Protected Member Functions

virtual pos_type seekoff (off_type offset, std::ios_base::seekdir dir, std::ios_base::openmode __mode=std::ios_base::in|std::ios_base::out)
 
virtual pos_type seekpos (pos_type pos, std::ios_base::openmode mode=std::ios_base::in|std::ios_base::out)
 
virtual std::streamsize xsgetn (char_type *s, std::streamsize n)
 
virtual int underflow ()
 
void clearAll ()
 
ossim_int64 getBlockIndex (ossim_int64 byteOffset) const
 
ossim_int64 getBlockOffset (ossim_int64 byteOffset) const
 
bool getBlockRangeInBytes (ossim_int64 blockIndex, ossim_int64 &startRange, ossim_int64 &endRange) const
 
bool loadBlock (ossim_int64 absolutePosition)
 
ossim_int64 getAbsoluteByteOffset () const
 
bool withinWindow () const
 

Protected Attributes

std::string m_bucket
 
std::string m_key
 
std::vector< char > m_buffer
 
ossim_int64 m_bufferActualDataSize
 
ossim_int64 m_currentBlockPosition
 
char * m_bufferPtr
 
ossim_int64 m_fileSize
 
bool m_opened
 
ossimCurlHttpRequest m_curlHttpRequest
 

Detailed Description

Definition at line 24 of file ossimCurlStreamBuffer.h.

Constructor & Destructor Documentation

◆ CurlStreamBuffer()

ossim::CurlStreamBuffer::CurlStreamBuffer ( ossim_int64  blockSize = ossim::CurlStreamDefaults::m_readBlocksize)

Definition at line 31 of file ossimCurlStreamBuffer.cpp.

References m_bufferPtr.

32  :
33  m_bucket(""),
34  m_key(""),
35  m_buffer(blockSize),
38  m_bufferPtr(0),
39  m_fileSize(0),
40  m_opened(false)
41  //m_mode(0)
42 {
44 }
std::vector< char > m_buffer

◆ ~CurlStreamBuffer()

virtual ossim::CurlStreamBuffer::~CurlStreamBuffer ( )
inlinevirtual

Definition at line 43 of file ossimCurlStreamBuffer.h.

44  {
45 
46  }

Member Function Documentation

◆ clearAll()

void ossim::CurlStreamBuffer::clearAll ( )
protected

Definition at line 249 of file ossimCurlStreamBuffer.cpp.

250 {
251  m_bucket = "";
252  m_key = "";
253  m_fileSize = 0;
254  m_opened = false;
256 }

◆ getAbsoluteByteOffset()

ossim_int64 ossim::CurlStreamBuffer::getAbsoluteByteOffset ( ) const
protected

Definition at line 525 of file ossimCurlStreamBuffer.cpp.

526 {
527  ossim_int64 result = -1;
528 
529  if(m_currentBlockPosition >= 0)
530  {
531  result = m_currentBlockPosition;
532  if(gptr()&&eback())
533  {
534  result += (gptr()-eback());
535  }
536  }
537 
538  // std::cout << "RESULT getAbsoluteByteOffset======== " << result << "\n";
539  return result;
540 }
long long ossim_int64

◆ getBlockIndex()

ossim_int64 ossim::CurlStreamBuffer::getBlockIndex ( ossim_int64  byteOffset) const
protected

Definition at line 46 of file ossimCurlStreamBuffer.cpp.

47 {
48  ossim_int64 blockNumber = -1;
49 
50  if(byteOffset < (ossim_int64)m_fileSize)
51  {
52  if(m_buffer.size()>0)
53  {
54  blockNumber = byteOffset/m_buffer.size();
55  }
56  else
57  {
58  }
59  }
60  else
61  {
62  }
63  return blockNumber;
64 }
std::vector< char > m_buffer
long long ossim_int64

◆ getBlockOffset()

ossim_int64 ossim::CurlStreamBuffer::getBlockOffset ( ossim_int64  byteOffset) const
protected

Definition at line 66 of file ossimCurlStreamBuffer.cpp.

67 {
68  ossim_int64 blockOffset = -1;
69 
70  if(m_buffer.size()>0)
71  {
72  blockOffset = byteOffset%m_buffer.size();
73  }
74 
75  return blockOffset;
76 }
std::vector< char > m_buffer
long long ossim_int64

◆ getBlockRangeInBytes()

bool ossim::CurlStreamBuffer::getBlockRangeInBytes ( ossim_int64  blockIndex,
ossim_int64 startRange,
ossim_int64 endRange 
) const
protected

Definition at line 78 of file ossimCurlStreamBuffer.cpp.

81 {
82  bool result = false;
83 
84  if(blockIndex >= 0)
85  {
86  startRange = blockIndex*m_buffer.size();
87  endRange = startRange + m_buffer.size()-1;
88 
89  result = true;
90  }
91 
92  return result;
93 }
std::vector< char > m_buffer

◆ getBlockSize()

ossim_uint64 ossim::CurlStreamBuffer::getBlockSize ( ) const
Returns
Size of block buffer in bytes.

Definition at line 553 of file ossimCurlStreamBuffer.cpp.

554 {
555  return m_buffer.size();
556 }
std::vector< char > m_buffer

◆ getFileSize()

ossim_int64 ossim::CurlStreamBuffer::getFileSize ( ) const
Returns
Size of file in bytes.

Definition at line 548 of file ossimCurlStreamBuffer.cpp.

549 {
550  return static_cast<ossim_int64>(m_fileSize);
551 }
long long ossim_int64

◆ is_open()

bool ossim::CurlStreamBuffer::is_open ( ) const
inline

Definition at line 39 of file ossimCurlStreamBuffer.h.

References m_opened.

40  {
41  return m_opened;
42  }

◆ loadBlock()

bool ossim::CurlStreamBuffer::loadBlock ( ossim_int64  absolutePosition)
protected

Definition at line 95 of file ossimCurlStreamBuffer.cpp.

References ossimHttpResponse::convertHeaderStreamToKeywordlist(), ossimWebResponse::copyAllDataFromInputStream(), ossimRefPtr< T >::get(), ossimHttpResponse::getContentLength(), ossimHttpResponse::getStatusCode(), and ossimHttpResponse::headerKwl().

96 {
97  bool result = false;
98  m_bufferPtr = 0;
99  //GetObjectRequest getObjectRequest;
100  std::stringstream stringStream;
101  ossim_int64 startRange, endRange;
102  ossim_int64 blockIndex = getBlockIndex(absolutePosition);
103  // std::cout << "blockIndex = " << blockIndex << "\n";
104  if(absolutePosition<0) return false;
105  if((absolutePosition < 0) || (absolutePosition > (ossim_int64)m_fileSize))
106  {
107  return false;
108  }
109  if(getBlockRangeInBytes(blockIndex, startRange, endRange))
110  {
112  stringStream << "bytes=" << startRange << "-" << endRange;
113  m_curlHttpRequest.addHeaderOption("Range", stringStream.str().c_str());
114  // std::cout << "HEADER ====== " << stringStream.str().c_str() << "\n";
116  ossimHttpResponse* response = dynamic_cast<ossimHttpResponse*>(webResponse.get());
117  ossim_int32 code = 404;
118  if(response)
119  {
120  code = response->getStatusCode();
121  //std::cout << "GOT RESPONSE!!!\n";
122 
123  // may not get 200 for this is a partial content call
124  //
125  if((code >=200) && (code < 300))
126  {
127  m_buffer.clear();
129  m_bufferPtr = &m_buffer.front();
131  const ossimKeywordlist& headerKwl = response->headerKwl();
132  ossim_int64 contentLen = response->getContentLength();
133  if(contentLen >=0)
134  {
135  m_bufferActualDataSize = contentLen;
136  ossim_int64 delta = absolutePosition-startRange;
137  m_bufferPtr = &m_buffer.front();
139  m_currentBlockPosition = startRange;
140  result = true;
141  }
142  else
143  {
144  m_buffer.clear();
146  // std::cout << "FAILED LOADED BLOCK\n";
147 
148  }
149  }
150  else if(response)
151  {
152  // std::cout << "Status code was " << response->getStatusCode() << "\n";
153  }
154  }
155  // getObjectRequest.WithBucket(m_bucket.c_str())
156  // .WithKey(m_key.c_str()).WithRange(stringStream.str().c_str());
157  // auto getObjectOutcome = m_client.GetObject(getObjectRequest);
158 
159  // if(getObjectOutcome.IsSuccess())
160  // {
161  // Aws::IOStream& bodyStream = getObjectOutcome.GetResult().GetBody();
162  // ossim_int64 bufSize = getObjectOutcome.GetResult().GetContentLength();
163  // m_bufferActualDataSize = bufSize;
164  // bodyStream.read(&m_buffer.front(), bufSize);
165  // m_bufferPtr = &m_buffer.front();
166 
167  // ossim_int64 delta = absolutePosition-startRange;
168  // setg(m_bufferPtr, m_bufferPtr + delta, m_bufferPtr+m_bufferActualDataSize);
169  // m_currentBlockPosition = startRange;
170  // result = true;
171  // }
172  // else
173  // {
174  // m_bufferActualDataSize = 0;
175  // }
176  }
177 
178  return result;
179 }
std::basic_stringstream< char > stringstream
Class for char mixed input and output memory streams.
Definition: ossimIosFwd.h:38
ossim_int64 getBlockIndex(ossim_int64 byteOffset) const
ossim_uint32 getStatusCode() const
Represents serializable keyword/value map.
ossim_int64 getContentLength() const
ossimKeywordlist & headerKwl()
virtual ossimRefPtr< ossimWebResponse > getResponse()
std::vector< char > m_buffer
void addHeaderOption(const ossimString &name, const ossimString &value)
bool getBlockRangeInBytes(ossim_int64 blockIndex, ossim_int64 &startRange, ossim_int64 &endRange) const
void copyAllDataFromInputStream(ByteBuffer &buffer)
ossimCurlHttpRequest m_curlHttpRequest
long long ossim_int64
void convertHeaderStreamToKeywordlist()
This will parse out the response code from the status line and initialize the header variables into a...
int ossim_int32

◆ open() [1/2]

ossim::CurlStreamBuffer * ossim::CurlStreamBuffer::open ( const char *  connectionString,
const ossimKeywordlist options,
std::ios_base::openmode  mode 
)

Definition at line 181 of file ossimCurlStreamBuffer.cpp.

Referenced by ossim::CurlIStream::open().

184 {
185  std::string temp(connectionString);
186  return open(temp, options, m);
187 }
CurlStreamBuffer * open(const char *connectionString, const ossimKeywordlist &options, std::ios_base::openmode mode)

◆ open() [2/2]

ossim::CurlStreamBuffer * ossim::CurlStreamBuffer::open ( const std::string &  connectionString,
const ossimKeywordlist options,
std::ios_base::openmode  mode 
)

Definition at line 189 of file ossimCurlStreamBuffer.cpp.

192 {
193  if(traceDebug())
194  {
196  << "ossim::CurlStreamBuffer::open DEBUG: entered..... with connection " << connectionString << std::endl;
197  }
198  // bool result = false;
199  ossimUrl url(connectionString);
200  ossimKeywordlist header;
201  clearAll();
202  // m_mode = mode;
204 
205  // AWS server is case insensitive:
206  if( (url.getProtocol() == "http") || (url.getProtocol() == "https") )
207  {
208  ossim_int64 filesize;
209  m_curlHttpRequest.set(url, header);
210  if(ossim::CurlHeaderCache::instance()->getCachedFilesize(connectionString, filesize))
211  {
212  m_fileSize = filesize;
213  m_opened = true;
215  }
216  else
217  {
218  m_opened = true;
221 
222  if(m_fileSize > 0)
223  {
224  m_opened = true;
225  }
226  ossim::CurlHeaderCache::Node_t nodePtr = std::make_shared<ossim::CurlHeaderCacheNode>(m_fileSize);
227  ossim::CurlHeaderCache::instance()->addHeader(connectionString, nodePtr);
228  }
229  }
231 
232  if(traceDebug())
233  {
234  ossim_float64 delta = ossimTimer::instance()->delta_s(startTimer, endTimer);
235 
237  << "ossim::CurlStreamBuffer::open DEBUG: Took " << delta << " seconds to open" << std::endl;
239  << "ossim::CurlStreamBuffer::open DEBUG: leaving....." << std::endl;
240 
241  }
242  if(m_opened) return this;
243 
244  return 0;
245 }
unsigned long long Timer_t
Definition: ossimTimer.h:16
Represents serializable keyword/value map.
ossim_int64 getContentLength() const
static std::shared_ptr< CurlHeaderCache > instance()
double ossim_float64
static ossimTimer * instance()
Definition: ossimTimer.cpp:19
bool set(const ossimUrl &url, const ossimKeywordlist &headerOptions, HttpMethodType methodType=HTTP_METHOD_GET)
std::shared_ptr< CurlHeaderCacheNode > Node_t
ossimCurlHttpRequest m_curlHttpRequest
long long ossim_int64
Timer_t tick() const
Get the timers tick value.
Definition: ossimTimer.cpp:95
double delta_s(Timer_t t1, Timer_t t2) const
Get the time in seconds between timer ticks t1 and t2.
Definition: ossimTimer.h:45
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ seekoff()

ossim::CurlStreamBuffer::pos_type ossim::CurlStreamBuffer::seekoff ( off_type  offset,
std::ios_base::seekdir  dir,
std::ios_base::openmode  __mode = std::ios_base::in | std::ios_base::out 
)
protectedvirtual

Definition at line 289 of file ossimCurlStreamBuffer.cpp.

292 {
293  // std::cout <<"ossim::CurlStreamBuffer::seekoff type size === " << sizeof(off_type) << std::endl;
294  // std::cout <<"ossim::CurlStreamBuffer::seekoff offset ====== " << offset << std::endl;
295  // std::cout << "ossim::CurlStreamBuffer::seekoff\n";
296  pos_type result = pos_type(off_type(-1));
297  // bool withinBlock = true;
298  if((mode & std::ios_base::in)&&
299  (mode & std::ios_base::out))
300  {
301  return result;
302  }
303  switch(dir)
304  {
305  case std::ios_base::beg:
306  {
307  ossim_int64 absolutePosition = getAbsoluteByteOffset();
308  // really would like to figure out a better way but for now
309  // we have to have one valid block read in to properly adjust
310  // gptr() with gbump
311  //
312  if(!gptr())
313  {
314  if(!loadBlock(offset))
315  {
316  return result;
317  }
318  }
319  if((offset <= (ossim_int64)m_fileSize)&&
320  (offset >=0))
321  {
322  result = pos_type(offset);
323  }
324  if(!gptr())
325  {
326  if(!loadBlock(result))
327  {
328  return EOF;
329  }
330  }
331  else if(mode & std::ios_base::in)
332  {
333  absolutePosition = getAbsoluteByteOffset();
334  ossim_int64 delta = offset - absolutePosition;
335  setg(eback(), gptr()+delta, egptr());
336  //gbump(offset - absolutePosition);
337  }
338  // std::cout << "ossim::CurlStreamBuffer::seekoff beg RESULT??????????????????? " << result << std::endl;
339  break;
340  }
341  case std::ios_base::cur:
342  {
343  if(!gptr())
344  {
345  // std::cout << "LOADING BLOCK!!!!!!!!!!!!!!\n" << std::endl;
346  if(!loadBlock(0))
347  {
348  return result;
349  }
350  }
351  result = getAbsoluteByteOffset();
352  // std::cout << "INITIAL ABSOLUTE BYTE OFFSET ==== " << result << "\n";
353  if(!offset)
354  {
355  result = getAbsoluteByteOffset();
356  }
357  else
358  {
359  result += offset;
360 // gbump(offset);
361  setg(eback(), gptr()+offset, egptr());
362 
363  }
364  // std::cout << "ossim::CurlStreamBuffer::seekoff cur RESULT??????????????????? " << result << std::endl;
365 
366  break;
367  }
368  case std::ios_base::end:
369  {
370  ossim_int64 absolutePosition = m_fileSize + offset;
371  if(!gptr())
372  {
373  if(absolutePosition==m_fileSize)
374  {
375  if(!loadBlock(absolutePosition))
376  {
377  return result;
378  }
379  }
380  else
381  {
382  if(!loadBlock(absolutePosition))
383  {
384  return result;
385  }
386  }
387  }
388  ossim_int64 currentAbsolutePosition = getAbsoluteByteOffset();
389  ossim_int64 delta = absolutePosition-currentAbsolutePosition;
390 
391 // std::cout << "CURRENT ABSOLUTE POSITION === " << currentAbsolutePosition << std::endl;
392 // std::cout << "CURRENT ABSOLUTE delta POSITION === " << delta << std::endl;
393  if(mode & std::ios_base::in )
394  {
395  setg(eback(), gptr()+delta, egptr());
396 
397 // gbump(delta);
398  result = absolutePosition;
399  }
400  // std::cout << "ossim::CurlStreamBuffer::seekoff end RESULT??????????????????? " << result << std::endl;
401  break;
402  }
403  default:
404  {
405  break;
406  }
407  }
408 
409  return result;
410 }
ossim_int64 getAbsoluteByteOffset() const
long long ossim_int64
bool loadBlock(ossim_int64 absolutePosition)

◆ seekpos()

ossim::CurlStreamBuffer::pos_type ossim::CurlStreamBuffer::seekpos ( pos_type  pos,
std::ios_base::openmode  mode = std::ios_base::in | std::ios_base::out 
)
protectedvirtual

Definition at line 412 of file ossimCurlStreamBuffer.cpp.

413 {
414  // std::cout << "ossim::CurlStreamBuffer::seekpos: " << pos << std::endl;
415  pos_type result = pos_type(off_type(-1));
416  ossim_int64 tempPos = static_cast<ossim_int64>(pos);
417  // Currently we must initialize to a block
418  if(!gptr())
419  {
420  if(!loadBlock(tempPos))
421  {
422  return result;
423  }
424  }
425  ossim_int64 absoluteLocation = getAbsoluteByteOffset();
426  if(mode & std::ios_base::in)
427  {
428  if((pos >= 0)&&(pos < (ossim_int64)m_fileSize))
429  {
430  ossim_int64 delta = tempPos-absoluteLocation;
431  if(delta)
432  {
433  setg(eback(), gptr()+delta, egptr());
434  //gbump(delta);
435  }
436  result = pos;
437  }
438  }
439  return result;
440 }
ossim_int64 getAbsoluteByteOffset() const
long long ossim_int64
bool loadBlock(ossim_int64 absolutePosition)

◆ underflow()

int ossim::CurlStreamBuffer::underflow ( )
protectedvirtual

Definition at line 259 of file ossimCurlStreamBuffer.cpp.

260 {
261  if(!is_open())
262  {
263  return EOF;
264  }
265  else if( !withinWindow() )
266  {
267  ossim_int64 absolutePosition = getAbsoluteByteOffset();
268  if(absolutePosition < 0)
269  {
270  return EOF;
271  }
272 
273  if(!loadBlock(absolutePosition))
274  {
275  return EOF;
276  }
277  }
278 
279  // std::cout << "GPTR CHARACTER ========== "
280  // << (int)static_cast<ossim_uint8>(*gptr()) << std::endl;
281 
282  //---
283  // Double cast to get non-negative values so as to not send an inadvertent
284  // EOF(-1) to caller.
285  //---
286  return (int)static_cast<ossim_uint8>(*gptr());
287 }
ossim_int64 getAbsoluteByteOffset() const
long long ossim_int64
bool loadBlock(ossim_int64 absolutePosition)
unsigned char ossim_uint8

◆ withinWindow()

bool ossim::CurlStreamBuffer::withinWindow ( ) const
protected

Definition at line 542 of file ossimCurlStreamBuffer.cpp.

543 {
544  if(!gptr()) return false;
545  return ((gptr()>=eback()) && (gptr()<egptr()));
546 }

◆ xsgetn()

std::streamsize ossim::CurlStreamBuffer::xsgetn ( char_type *  s,
std::streamsize  n 
)
protectedvirtual

Definition at line 442 of file ossimCurlStreamBuffer.cpp.

References n.

443 {
444  // std::cout << "ossim::CurlStreamBuffer::xsgetn" << std::endl;
445 
446  if(!is_open()) return EOF;
447  // unsigned long int bytesLeftToRead = egptr()-gptr();
448  // initialize if we need to to load the block at current position
449  if((!withinWindow())&&is_open())
450  {
451  if(!gptr())
452  {
453  if(!loadBlock(0))
454  {
455  return EOF;
456  }
457  }
458  else if(!loadBlock(getAbsoluteByteOffset()))
459  {
460  return EOF;
461  }
462  }
463  ossim_int64 bytesNeedToRead = n;
464  // ossim_int64 bytesToRead = 0;
465  ossim_int64 bytesRead = 0;
466  ossim_int64 currentAbsolutePosition = getAbsoluteByteOffset();
467  // ossim_int64 startOffset, endOffset;
468  if(currentAbsolutePosition >= (ossim_int64)m_fileSize)
469  {
470  return EOF;
471  }
472  else if((currentAbsolutePosition + bytesNeedToRead)>(ossim_int64)m_fileSize)
473  {
474  bytesNeedToRead = (m_fileSize - currentAbsolutePosition);
475  }
476 
477  while(bytesNeedToRead > 0)
478  {
479  currentAbsolutePosition = getAbsoluteByteOffset();
480  if(!withinWindow())
481  {
482  if(!loadBlock(currentAbsolutePosition))
483  {
484  return bytesRead;
485  }
486  currentAbsolutePosition = getAbsoluteByteOffset();
487  }
488 
489  // get each bloc
490  if(currentAbsolutePosition>=0)
491  {
492  //getBlockRangeInBytes(getBlockIndex(m_currentBlockPosition), startOffset, endOffset);
493 
494  ossim_int64 delta = (egptr()-gptr());//(endOffset - m_currentBlockPosition)+1;
495 
496  if(delta <= bytesNeedToRead)
497  {
498  std::memcpy(s+bytesRead, gptr(), delta);
499  //m_currentBlockPosition += delta;
500  //setg(eback(), egptr(), egptr());
501  bytesRead+=delta;
502  bytesNeedToRead-=delta;
503  //gbump(delta);
504  setg(eback(), gptr()+delta, egptr());
505 
506  }
507  else
508  {
509  std::memcpy(s+bytesRead, gptr(), bytesNeedToRead);
510  setg(eback(), gptr()+bytesNeedToRead, egptr());
511  //gbump(bytesNeedToRead);
512 // std::cout << "gbump 2 DELTA ========= " << bytesNeedToRead << std::endl;
513  bytesRead+=bytesNeedToRead;
514  bytesNeedToRead=0;
515  }
516  }
517  else
518  {
519  break;
520  }
521  }
522  return std::streamsize(bytesRead);
523 }
ossim_int64 getAbsoluteByteOffset() const
os2<< "> n<< " > nendobj n
long long ossim_int64
bool loadBlock(ossim_int64 absolutePosition)

Member Data Documentation

◆ m_bucket

std::string ossim::CurlStreamBuffer::m_bucket
protected

Definition at line 82 of file ossimCurlStreamBuffer.h.

◆ m_buffer

std::vector<char> ossim::CurlStreamBuffer::m_buffer
protected

Definition at line 84 of file ossimCurlStreamBuffer.h.

◆ m_bufferActualDataSize

ossim_int64 ossim::CurlStreamBuffer::m_bufferActualDataSize
protected

Definition at line 85 of file ossimCurlStreamBuffer.h.

◆ m_bufferPtr

char* ossim::CurlStreamBuffer::m_bufferPtr
protected

Definition at line 87 of file ossimCurlStreamBuffer.h.

Referenced by CurlStreamBuffer().

◆ m_curlHttpRequest

ossimCurlHttpRequest ossim::CurlStreamBuffer::m_curlHttpRequest
protected

Definition at line 90 of file ossimCurlStreamBuffer.h.

◆ m_currentBlockPosition

ossim_int64 ossim::CurlStreamBuffer::m_currentBlockPosition
protected

Definition at line 86 of file ossimCurlStreamBuffer.h.

◆ m_fileSize

ossim_int64 ossim::CurlStreamBuffer::m_fileSize
protected

Definition at line 88 of file ossimCurlStreamBuffer.h.

◆ m_key

std::string ossim::CurlStreamBuffer::m_key
protected

Definition at line 83 of file ossimCurlStreamBuffer.h.

◆ m_opened

bool ossim::CurlStreamBuffer::m_opened
protected

Definition at line 89 of file ossimCurlStreamBuffer.h.

Referenced by is_open().


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