![]() |
VSM C++ SDK
Vehicle Specific Modules SDK
|
Stream class which represents opened file. More...
#include <file_processor.h>
Classes | |
class | Mode |
Mode for file opening. More... | |
class | Native_handle |
Interface for platform native file handle. More... | |
Public Types | |
enum | Lock_result { Lock_result::OK, Lock_result::BLOCKED, Lock_result::ERROR } |
Lock operation result. More... | |
typedef std::shared_ptr< Stream > | Ptr |
Pointer type. | |
typedef std::weak_ptr< Stream > | Weak_ptr |
Pointer type. | |
typedef Reference_guard < Stream::Ptr > | Ref |
Reference type. More... | |
typedef Callback_proxy< void, Io_result > | Lock_handler |
Default prototype for lock operation completion handler. More... | |
![]() | |
enum | State { State::CLOSED, State::OPENING, State::OPENING_PASSIVE, State::OPENED } |
Stream states. More... | |
enum | Type { FILE, SERIAL, ANDROID_SERIAL, TCP, UDP, UDP_MULTICAST, CAN, UNDEFINED } |
Stream types. More... | |
typedef std::shared_ptr < Io_stream > | Ptr |
Pointer type. | |
typedef std::weak_ptr< Io_stream > | Weak_ptr |
Pointer type. | |
typedef Reference_guard < Io_stream::Ptr > | Ref |
Guard object. More... | |
typedef int64_t | Offset |
Offset for read/write operations. More... | |
typedef Callback_proxy< void, Io_result > | Write_handler |
Default prototype for write operation completion handler. More... | |
typedef Callback_proxy< void, Io_buffer::Ptr, Io_result > | Read_handler |
Default prototype for read operation completion handler. More... | |
typedef Callback_proxy< void > | Close_handler |
Default prototype for close operation completion handler. More... | |
Public Member Functions | |
Stream (File_processor::Ptr processor, const std::string &path, Mode mode, bool maintain_pos, Native_handle::Unique_ptr &&native_handle) | |
Construct file stream. More... | |
Offset | Get_current_pos () const |
Get current position in the stream. More... | |
Offset | Seek (Offset pos, bool is_relative=false) |
Set new current position for the stream. More... | |
Operation_waiter | Lock (Lock_handler completion_handler, Request_completion_context::Ptr comp_ctx=Request_temp_completion_context::Create(), bool lock=true) |
Put an exclusive lock on file. More... | |
Operation_waiter | Unlock (Lock_handler completion_handler=Make_dummy_callback< void, Io_result >(), Request_completion_context::Ptr comp_ctx=Request_temp_completion_context::Create()) |
Remove lock from file. More... | |
![]() | |
void | Add_ref () |
Add reference to the stream. More... | |
void | Release_ref () |
Release reference for the stream. More... | |
Operation_waiter | Write (Io_buffer::Ptr buffer, Offset offset, Write_handler completion_handler=Make_dummy_callback< void, Io_result >(), Request_completion_context::Ptr comp_ctx=Request_temp_completion_context::Create()) |
Initiate write operation. More... | |
Operation_waiter | Write (Io_buffer::Ptr buffer, Write_handler completion_handler=Make_dummy_callback< void, Io_result >(), Request_completion_context::Ptr comp_ctx=Request_temp_completion_context::Create()) |
Initiate write operation. More... | |
Operation_waiter | Read (size_t max_to_read, size_t min_to_read, Offset offset, Read_handler completion_handler=Make_dummy_callback< void, Io_buffer::Ptr, Io_result >(), Request_completion_context::Ptr comp_ctx=Request_temp_completion_context::Create()) |
Initiate read operation. More... | |
Operation_waiter | Read (size_t max_to_read, size_t min_to_read=1, Read_handler completion_handler=Make_dummy_callback< void, Io_buffer::Ptr, Io_result >(), Request_completion_context::Ptr comp_ctx=Request_temp_completion_context::Create()) |
Initiate read operation. More... | |
Operation_waiter | Close (Close_handler completion_handler=Make_dummy_callback< void >(), Request_completion_context::Ptr comp_ctx=Request_temp_completion_context::Create()) |
Initiate stream close operation. More... | |
Io_stream (const Io_stream &)=delete | |
There is no sense in copying the stream. More... | |
Io_stream (Type type) | |
Constructor. | |
State | Get_state () const |
Get current state of the stream. More... | |
bool | Is_closed () const |
Checks if stream is closed or not. More... | |
std::string | Get_name () const |
Get human readable stream name. More... | |
Type | Get_type () const |
Static Public Member Functions | |
template<typename... Args> | |
static Ptr | Create (Args &&...args) |
Create an instance. More... | |
![]() | |
template<typename... Args> | |
static Ptr | Create (Args &&...args) |
Create an instance. More... | |
static const char * | Io_result_as_char (const Io_result res) |
Convert Io_result value to character string. More... | |
Friends | |
class | File_processor |
class | Native_handle |
Additional Inherited Members | |
![]() | |
static const Offset | OFFSET_NONE |
Offset special value which indicates that the offset value is not specified. | |
static const Offset | OFFSET_END |
Offset special value which indicates that the offset value corresponds to the stream end (e.g. More... | |
![]() | |
void | Set_name (const std::string &) |
Set the stream name. More... | |
![]() | |
Type | stream_type |
State | state = State::CLOSED |
Current state of the stream. More... | |
std::atomic_int | ref_count = { 0 } |
Reference counter. More... | |
Stream class which represents opened file.
Default prototype for lock operation completion handler.
Reference type.
|
strong |
ugcs::vsm::File_processor::Stream::Stream | ( | File_processor::Ptr | processor, |
const std::string & | path, | ||
Mode | mode, | ||
bool | maintain_pos, | ||
Native_handle::Unique_ptr && | native_handle | ||
) |
Construct file stream.
processor | Associated processor instance. |
path | File path. |
mode | Parsed file opening mode. |
maintain_pos | Indicates whether file position maintenance is required. See File_processor::Open. |
native_handle | Native handle to be used for stream operations. |
|
inlinestatic |
Create an instance.
|
inline |
Get current position in the stream.
This method has meaning only file position is maintained by the stream.
Operation_waiter ugcs::vsm::File_processor::Stream::Lock | ( | Lock_handler | completion_handler, |
Request_completion_context::Ptr | comp_ctx = Request_temp_completion_context::Create() , |
||
bool | lock = true |
||
) |
Put an exclusive lock on file.
On Windows it's mandatory lock on first byte of file implemented via LockFileEx() call. On Linux it's advisory lock implemented via flock() call. File can be unlocked via Unlock() call or via Close().
NOTE: No double lock supported: Stream can be locked again only after successful Unlock() operation. I.e. subsequent Lock on the same stream will fail until Unlock() is called and unlock completion is delivered.
completion_handler | User specified completion handler. |
comp_ctx | User specified completion context. |
lock | true: lock operation, false: unlock operation. |
Set new current position for the stream.
In case the stream does not maintain the current position, this operation does nothing. Be aware that seeking result is undefined if read or write operation is in progress.
pos | New current position value. |
is_relative | Indicates that position is set relatively to the current position value. |
Invalid_param_exception | if the resulted position is invalid (e.g. negative). |
|
inline |
Remove lock from file.
On Windows it unlocks on first byte of file implemented via UnlockFile() call. On Linux it is implemented via flock() call.
completion_handler | User specified completion handler. |
comp_ctx | User specified completion context. |