diff options
Diffstat (limited to '')
| -rw-r--r-- | src/stream.h | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/src/stream.h b/src/stream.h index 0ea5560..e7db7af 100644 --- a/src/stream.h +++ b/src/stream.h | |||
| @@ -8,6 +8,8 @@ | |||
| 8 | #ifndef BU_STREAM_H | 8 | #ifndef BU_STREAM_H |
| 9 | #define BU_STREAM_H | 9 | #define BU_STREAM_H |
| 10 | 10 | ||
| 11 | #include "bu/config.h" | ||
| 12 | |||
| 11 | #include <stdint.h> | 13 | #include <stdint.h> |
| 12 | #include <stdio.h> | 14 | #include <stdio.h> |
| 13 | 15 | ||
| @@ -43,7 +45,7 @@ namespace Bu | |||
| 43 | *@param nBytes (size_t) Max data to read. | 45 | *@param nBytes (size_t) Max data to read. |
| 44 | *@returns (size_t) Amount of data read. | 46 | *@returns (size_t) Amount of data read. |
| 45 | */ | 47 | */ |
| 46 | virtual size_t read( void *pBuf, size_t nBytes ) = 0; | 48 | virtual size read( void *pBuf, size iBytes ) = 0; |
| 47 | 49 | ||
| 48 | /** | 50 | /** |
| 49 | * Attempts to read a complete line from the stream. This will stop | 51 | * Attempts to read a complete line from the stream. This will stop |
| @@ -59,33 +61,33 @@ namespace Bu | |||
| 59 | *@param nBytes (size_t) Amount of data to write from pBuf. | 61 | *@param nBytes (size_t) Amount of data to write from pBuf. |
| 60 | *@returns (size_t) Amount of data actually written. | 62 | *@returns (size_t) Amount of data actually written. |
| 61 | */ | 63 | */ |
| 62 | virtual size_t write( const void *pBuf, size_t nBytes ) = 0; | 64 | virtual size write( const void *pBuf, size iBytes ) = 0; |
| 63 | 65 | ||
| 64 | virtual size_t write( const Bu::FString &sBuf ); | 66 | virtual size write( const Bu::FString &sBuf ); |
| 65 | 67 | ||
| 66 | /** | 68 | /** |
| 67 | * Get the current position in the stream. | 69 | * Get the current position in the stream. |
| 68 | *@returns (long) The current position in the stream. | 70 | *@returns (long) The current position in the stream. |
| 69 | */ | 71 | */ |
| 70 | virtual long tell() = 0; | 72 | virtual size tell() = 0; |
| 71 | 73 | ||
| 72 | /** | 74 | /** |
| 73 | * Seek to a position in the stream relative to the current position. | 75 | * Seek to a position in the stream relative to the current position. |
| 74 | *@param offset (long) Offset from current position to seek to. | 76 | *@param offset (long) Offset from current position to seek to. |
| 75 | */ | 77 | */ |
| 76 | virtual void seek( long offset ) = 0; | 78 | virtual void seek( size offset ) = 0; |
| 77 | 79 | ||
| 78 | /** | 80 | /** |
| 79 | * Set position in the stream relative to the start of the stream. | 81 | * Set position in the stream relative to the start of the stream. |
| 80 | *@param pos (long) The position. | 82 | *@param pos (long) The position. |
| 81 | */ | 83 | */ |
| 82 | virtual void setPos( long pos ) = 0; | 84 | virtual void setPos( size pos ) = 0; |
| 83 | 85 | ||
| 84 | /** | 86 | /** |
| 85 | * Set position in the stream relative to the end of the stream. | 87 | * Set position in the stream relative to the end of the stream. |
| 86 | *@param pos (long) The position. | 88 | *@param pos (long) The position. |
| 87 | */ | 89 | */ |
| 88 | virtual void setPosEnd( long pos ) = 0; | 90 | virtual void setPosEnd( size pos ) = 0; |
| 89 | 91 | ||
| 90 | /** | 92 | /** |
| 91 | * Are we at the end of the stream? | 93 | * Are we at the end of the stream? |
| @@ -158,10 +160,32 @@ namespace Bu | |||
| 158 | * removed from the end of the stream, but the content of the added | 160 | * removed from the end of the stream, but the content of the added |
| 159 | * data is undefined. | 161 | * data is undefined. |
| 160 | */ | 162 | */ |
| 161 | virtual void setSize( long iSize ) = 0; | 163 | virtual void setSize( size iSize ) = 0; |
| 164 | |||
| 165 | /** | ||
| 166 | * Returns the size of the stream if the stream can have a size. For | ||
| 167 | * streams that do not (sockets, pipes, etc.) this should throw an | ||
| 168 | * unsupported exception. | ||
| 169 | */ | ||
| 170 | virtual size getSize() const = 0; | ||
| 162 | 171 | ||
| 163 | public: // Filters | 172 | /** |
| 173 | * Returns the block-size of the stream, if it has one. This should | ||
| 174 | * throw an unsupported exception. In some cases the block size | ||
| 175 | * returned will not represent quite the same thing, for example, | ||
| 176 | * sockets will return their MTU, while files will return the | ||
| 177 | * filesystem's block size, and memory buffers will throw an exception. | ||
| 178 | */ | ||
| 179 | virtual size getBlockSize() const = 0; | ||
| 164 | 180 | ||
| 181 | /** | ||
| 182 | * If possible, this returns a string that can be used to describe how | ||
| 183 | * to access the open stream. Not all streams support this, such as | ||
| 184 | * MemBuf, but for files it may give you a path to a file, for a socket | ||
| 185 | * it may give you an ip address, etc. If it isn't supported, an empty | ||
| 186 | * string may be returned. | ||
| 187 | */ | ||
| 188 | virtual Bu::FString getLocation() const = 0; | ||
| 165 | 189 | ||
| 166 | private: | 190 | private: |
| 167 | 191 | ||
