PLCnext API Documentation 25.0.2.69
FileStream.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/System/Commons/Io/Stream.hpp"
9#include "Arp/System/Commons/Io/FileMode.hpp"
10#include "Arp/System/Commons/Io/FileAccess.hpp"
11
12// forwards
13namespace Arp { namespace System { namespace Ve
14{
15class IFileService;
16}}}
17
18namespace Arp { namespace System { namespace Commons { namespace Io
19{
20
24class FileStream : public Stream
25{
26public: // usings
27 using IFileService = Arp::System::Ve::IFileService;
28
29public: // construction/destruction
30
31 FileStream(const String& path, FileMode mode);
32 FileStream(const String& path, FileMode mode, FileAccess access);
33 FileStream(const String& path, FileMode mode, FileAccess access, bool sync);
34
36 FileStream(const FileStream& arg) = delete;
37
39 FileStream& operator=(const FileStream& arg) = delete;
40
41 ~FileStream(void)override;
42
43public: // setter/getter operations
44 size_t GetLength(void);
45 void SetLength(size_t length);
46 size_t GetPosition(void) override;
47 void SetPosition(size_t position) override;
48
49
50public: // operations
51 void Flush(void) override;
52 size_t Seek(size_t offset, SeekOrigin origin) override;
53 size_t Read(byte* pBuffer, size_t bufferSize, size_t offset, size_t count) override;
54 void Write(const byte* pBuffer, size_t bufferSize, size_t offset, size_t count) override;
55 void Close(void);
56
57private: // methods
58 void Construct(const String& path, FileMode mode, FileAccess access);
59 void Construct(const String& path, FileMode mode, FileAccess access, bool sync);
60 static bool DetermineCanRead(FileAccess access);
61 static bool DetermineCanWrite(FileAccess access);
62
63private: // fields
64 String pathName;
65 IFileService* pFileService = nullptr;
66};
67
68}}}} // end of namespace Arp::System::Commons::Io
This abstract class shall be the base class of all stream implementations.
Definition: Stream.hpp:20
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Exposes a Stream around a file, supporting read and write operations.
Definition: FileStream.hpp:25
FileStream(const String &path, FileMode mode)
Initializes a new instance of the FileStream class.
Definition: FileStream.cpp:27
FileStream(const FileStream &arg)=delete
Copy constructor.
void SetLength(size_t length)
Reserves a specific amount of bytes for the opened file.
Definition: FileStream.cpp:163
size_t Seek(size_t offset, SeekOrigin origin) override
Sets a new position if the internal stream pointer relative to a specific position.
Definition: FileStream.cpp:203
~FileStream(void) override
Destructs this instance and frees all resources.
Definition: FileStream.cpp:67
size_t Read(byte *pBuffer, size_t bufferSize, size_t offset, size_t count) override
Reads data from stream into assigned buffer at a specific offset.
Definition: FileStream.cpp:243
void Write(const byte *pBuffer, size_t bufferSize, size_t offset, size_t count) override
Writes data from assigned buffer to stream.
Definition: FileStream.cpp:275
size_t GetPosition(void) override
Returns the byte offset of the internal stream pointer from the beginning of the file.
Definition: FileStream.cpp:172
void SetPosition(size_t position) override
Sets a new position of the internal stream pointer.
Definition: FileStream.cpp:181
FileStream & operator=(const FileStream &arg)=delete
Assignment operator.
void Flush(void) override
Forces a write of all possibly buffered data (input stream) or discards any buffered not yet read by ...
Definition: FileStream.cpp:193
size_t GetLength(void)
Returns the size of the opened file in bytes.
Definition: FileStream.cpp:144
FileMode
Contains constants for specifying how the OS should open a file.
Definition: FileMode.hpp:24
FileAccess
Contains constants for specifying the access you want for a file. You can have Read,...
Definition: FileAccess.hpp:18
Root namespace for the PLCnext API