VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Platform/FileStream.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Platform/FileStream.h')
-rw-r--r--src/Platform/FileStream.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/Platform/FileStream.h b/src/Platform/FileStream.h
new file mode 100644
index 00000000..1fe6b2ff
--- /dev/null
+++ b/src/Platform/FileStream.h
@@ -0,0 +1,58 @@
+/*
+ Copyright (c) 2008 TrueCrypt Developers Association. All rights reserved.
+
+ Governed by the TrueCrypt License 3.0 the full text of which is contained in
+ the file License.txt included in TrueCrypt binary and source code distribution
+ packages.
+*/
+
+#ifndef TC_HEADER_Platform_FileStream
+#define TC_HEADER_Platform_FileStream
+
+#include "PlatformBase.h"
+#include "File.h"
+#include "SharedPtr.h"
+#include "Stream.h"
+
+namespace TrueCrypt
+{
+ class FileStream : public Stream
+ {
+ public:
+ FileStream (shared_ptr <File> file) : DataFile (file) { }
+ FileStream (File::SystemFileHandleType openFileHandle) { DataFile.reset (new File ()); DataFile->AssignSystemHandle (openFileHandle); }
+ virtual ~FileStream () { }
+
+ virtual uint64 Read (const BufferPtr &buffer)
+ {
+ return DataFile->Read (buffer);
+ }
+
+ virtual void ReadCompleteBuffer (const BufferPtr &buffer)
+ {
+ DataFile->ReadCompleteBuffer (buffer);
+ }
+
+ virtual string ReadToEnd ()
+ {
+ string str;
+ vector <char> buffer (4096);
+ uint64 len;
+
+ while ((len = DataFile->Read (BufferPtr (reinterpret_cast <byte *> (&buffer[0]), buffer.size()))) > 0)
+ str.insert (str.end(), buffer.begin(), buffer.begin() + static_cast <int> (len));
+
+ return str;
+ }
+
+ virtual void Write (const ConstBufferPtr &data)
+ {
+ DataFile->Write (data);
+ }
+
+ protected:
+ shared_ptr <File> DataFile;
+ };
+}
+
+#endif // TC_HEADER_Platform_FileStream