xrootd
|
#include <XrdEcStrmWriter.hh>
Classes | |
struct | global_status_t |
Public Member Functions | |
StrmWriter (const ObjCfg &objcfg) | |
Constructor. | |
virtual | ~StrmWriter () |
Destructor. | |
void | Open (XrdCl::ResponseHandler *handler, uint16_t timeout=0) |
void | Write (uint32_t size, const void *buff, XrdCl::ResponseHandler *handler) |
void | Close (XrdCl::ResponseHandler *handler, uint16_t timeout=0) |
uint64_t | GetSize () |
Private Types | |
typedef sync_queue< std::future< WrtBuff * > > | buff_queue |
Private Member Functions | |
void | EnqueueBuff (std::unique_ptr< WrtBuff > wrtbuff) |
std::unique_ptr< WrtBuff > | DequeueBuff () |
void | WriteBuff (std::unique_ptr< WrtBuff > buff) |
std::vector< char > | GetMetadataBuffer () |
void | CloseImpl (XrdCl::ResponseHandler *handler, uint16_t timeout=0) |
Static Private Member Functions | |
static void | writer_routine (StrmWriter *me) |
Private Attributes | |
const ObjCfg & | objcfg |
std::unique_ptr< WrtBuff > | wrtbuff |
std::vector< std::shared_ptr< XrdCl::ZipArchive > > | dataarchs |
std::vector< std::shared_ptr< XrdCl::File > > | metadataarchs |
std::vector< std::vector< char > > | cdbuffs |
buff_queue | buffers |
std::atomic< bool > | writer_thread_stop |
std::thread | writer_thread |
size_t | next_blknb |
global_status_t | global_status |
The Stream Writer objects, responsible for writing erasure coded data into selected placement group.
|
private |
|
inline |
Constructor.
|
inlinevirtual |
Destructor.
References buffers, XrdEc::sync_queue< Element >::interrupt(), writer_thread, and writer_thread_stop.
void XrdEc::StrmWriter::Close | ( | XrdCl::ResponseHandler * | handler, |
uint16_t | timeout = 0 |
||
) |
Close the data object
handler | : user callback |
|
private |
Close the data object (implementation)
handler | : user callback |
Referenced by XrdEc::StrmWriter::global_status_t::issue_close(), and XrdEc::StrmWriter::global_status_t::report_wrt().
|
inlineprivate |
Dequeue a write buffer after it has been erasure coded and checksumed
References buffers, and XrdEc::sync_queue< Element >::dequeue().
Referenced by writer_routine().
|
inlineprivate |
Enqueue the write buffer for calculating parity and crc32c
wrtbuff | : the write buffer |
References buffers, XrdEc::sync_queue< Element >::enqueue(), XrdEc::ThreadPool::Instance(), and wrtbuff.
|
private |
Get a buffer with metadata (CDFH and EOCD records)
|
inline |
References XrdEc::StrmWriter::global_status_t::get_btswritten(), and global_status.
void XrdEc::StrmWriter::Open | ( | XrdCl::ResponseHandler * | handler, |
uint16_t | timeout = 0 |
||
) |
Open the data object for writting
handler | : user callback |
void XrdEc::StrmWriter::Write | ( | uint32_t | size, |
const void * | buff, | ||
XrdCl::ResponseHandler * | handler | ||
) |
Write data to the data object
size | : number of bytes to be written |
buff | : buffer with data to be written |
handler | : user callback |
|
private |
Issue the write requests for the given write buffer
buff | : the buffer to be written |
Referenced by writer_routine().
|
inlinestaticprivate |
The writing routine running in a dedicated thread.
me | : the StrmWriter object |
References DequeueBuff(), WriteBuff(), writer_thread_stop, and wrtbuff.
|
private |
Referenced by DequeueBuff(), EnqueueBuff(), and ~StrmWriter().
|
private |
|
private |
|
private |
Referenced by GetSize().
|
private |
|
private |
|
private |
|
private |
Referenced by ~StrmWriter().
|
private |
Referenced by writer_routine(), and ~StrmWriter().
|
private |
Referenced by EnqueueBuff(), and writer_routine().