OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimCurlStreamBuffer.h
Go to the documentation of this file.
1 //---
2 //
3 // License: MIT
4 //
5 // Author: Garrett Potts
6 //
7 // Description:
8 //
9 // Curl HTTP stream definitions.
10 //
11 //---
12 // $Id$
13 
14 #ifndef ossimCurlStreamBuffer_HEADER
15 #define ossimCurlStreamBuffer_HEADER 1
16 
19 #include <iostream>
20 #include "CurlStreamDefaults.h"
21 #include "ossimCurlHttpRequest.h"
22 #include <vector>
23 namespace ossim{
24 class CurlStreamBuffer : public std::streambuf
25 {
26 public:
27  // S3StreamBuffer(ossim_int64 blockSize=4096);
29 
30  CurlStreamBuffer* open (const char* connectionString,
31  const ossimKeywordlist& options,
32  std::ios_base::openmode mode);
33  CurlStreamBuffer* open (const std::string& connectionString,
34  const ossimKeywordlist& options,
35  std::ios_base::openmode mode);
36 
37 
38 
39  bool is_open() const
40  {
41  return m_opened;
42  }
44  {
45 
46  }
47 
51  ossim_int64 getFileSize() const;
52 
56  ossim_uint64 getBlockSize() const;
57 
58 protected:
59  //virtual int_type pbackfail(int_type __c = traits_type::eof());
60  virtual pos_type seekoff(off_type offset, std::ios_base::seekdir dir,
61  std::ios_base::openmode __mode = std::ios_base::in | std::ios_base::out);
62  virtual pos_type seekpos(pos_type pos,
63  std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out);
64  virtual std::streamsize xsgetn(char_type* s, std::streamsize n);
65  virtual int underflow();
66 
67  void clearAll();
68 
69  ossim_int64 getBlockIndex(ossim_int64 byteOffset)const;
70  ossim_int64 getBlockOffset(ossim_int64 byteOffset)const;
71  bool getBlockRangeInBytes(ossim_int64 blockIndex,
72  ossim_int64& startRange,
73  ossim_int64& endRange)const;
74 
75  bool loadBlock(ossim_int64 absolutePosition);
76 
77  //void adjustForSeekgPosition(ossim_int64 seekPosition);
79  bool withinWindow()const;
80 
81  // Aws::S3::S3Client m_client;
82  std::string m_bucket;
83  std::string m_key;
84  std::vector<char> m_buffer;
87  char* m_bufferPtr;
89  bool m_opened;
91  //std::ios_base::openmode m_mode;
92 };
93 
94 }
95 
96 #endif
ossim_uint64 getBlockSize() const
ossim_int64 getAbsoluteByteOffset() const
virtual std::streamsize xsgetn(char_type *s, std::streamsize n)
ossim_int64 getBlockIndex(ossim_int64 byteOffset) const
Represents serializable keyword/value map.
This code was derived from https://gist.github.com/mshockwave.
Definition: Barrier.h:8
virtual pos_type seekpos(pos_type pos, std::ios_base::openmode mode=std::ios_base::in|std::ios_base::out)
static ossim_int64 m_readBlocksize
os2<< "> n<< " > nendobj n
unsigned long long ossim_uint64
std::vector< char > m_buffer
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)
CurlStreamBuffer(ossim_int64 blockSize=ossim::CurlStreamDefaults::m_readBlocksize)
bool getBlockRangeInBytes(ossim_int64 blockIndex, ossim_int64 &startRange, ossim_int64 &endRange) const
ossimCurlHttpRequest m_curlHttpRequest
long long ossim_int64
bool loadBlock(ossim_int64 absolutePosition)
CurlStreamBuffer * open(const char *connectionString, const ossimKeywordlist &options, std::ios_base::openmode mode)
ossim_int64 getBlockOffset(ossim_int64 byteOffset) const