blk_NetWriter Class Reference
[IVD Data format.]

#include <df.h>

Inheritance diagram for blk_NetWriter:

Inheritance graph
[legend]
Collaboration diagram for blk_NetWriter:

Collaboration graph
[legend]

List of all members.


Detailed Description

Class for transferring disk buffer over the network (CORBA).

Definition at line 444 of file df.h.


Public Member Functions

 blk_NetWriter (df_BlockManager &a_mgr, i_UploadAgent_ptr a_uploadAgt)
virtual ~blk_NetWriter ()

Protected Member Functions

virtual void Run (void *a_arg)

Protected Attributes

df_BlockManagerm_blkManager
df_MgrReader m_mgrReader
i_UploadAgent_var m_uploadAgent

Private Attributes

 log_CLASSID_m

Constructor & Destructor Documentation

blk_NetWriter::blk_NetWriter ( df_BlockManager a_mgr,
i_UploadAgent_ptr  a_uploadAgt 
)

Definition at line 34 of file blk_netwriter.cpp.

00036   : m_blkManager(a_mgr),
00037     m_mgrReader(a_mgr),
00038     m_uploadAgent( i_UploadAgent::_duplicate(a_uploadAgt) ) {
00039       // Empty
00040 }

blk_NetWriter::~blk_NetWriter (  )  [virtual]

Definition at line 43 of file blk_netwriter.cpp.

References log_FUNC_m.

00043                               {
00044     log_FUNC_m(~blk_NetWriter);
00045 }


Member Function Documentation

void blk_NetWriter::Run ( void *  a_arg  )  [protected, virtual]

Reimplemented from cmn_Thread.

Definition at line 47 of file blk_netwriter.cpp.

References dbg_DETAIL, dbg_LOW, dbg_NORM, df_BlockManager::GetBlocksWritten(), ivd_BaseException::GetDescription(), ivd_BaseException::GetError(), df_MgrReader::GetFull(), df_MgrReader::GetReaderIdx(), ipc_EXEC_m, ivd_Error, log_DBG_INT_m, log_DBG_m, log_ERR_m, log_FUNC_m, m_blkManager, m_mgrReader, m_uploadAgent, NULL, df_MgrReader::Release(), and df_MgrReader::SetError().

00047                                    {
00048     log_FUNC_m(Run);
00049 
00050     UInt64_t    blksFromMgr = 0;
00051 
00052     try {
00053         log_DBG_m(dbg_NORM, m_mgrReader.GetReaderIdx() << " Writer thread started.");
00054 
00055         const df_DataBlock *blk = NULL;
00056         while ( (blk = m_mgrReader.GetFull() ) != NULL) {
00057             blksFromMgr++;
00058             log_DBG_INT_m(dbg_DETAIL, m_mgrReader.GetReaderIdx() << " Got block. Writing.");
00059 
00060             try {
00061                 i_DataBlock_t dataBlock(
00062                     blk->GetUsedSize(),
00063                     blk->GetUsedSize(),
00064                     blk->GetData(),
00065                     0);
00066 
00067                 ipc_EXEC_m(
00068                     m_uploadAgent->Write(
00069                         dataBlock,
00070                         blk->GetBlockSize() );
00071                 );
00072             }
00073             catch (ivd_SysError &ie) {
00074                 m_mgrReader.SetError(
00075                     new ivd_SysError(ie.GetError(), ie.GetDescription()) );
00076                 throw;
00077             }
00078             catch (ivd_Error &ie) {
00079                 m_mgrReader.SetError(
00080                     new ivd_Error(ie.GetError(), ie.GetDescription()) );
00081                 throw;
00082             }
00083             catch (ivd_Exception &ie) {
00084                 m_mgrReader.SetError(
00085                     new ivd_Error(ie.GetError(), ie.GetDescription()) );
00086                 throw;
00087             }
00088             m_mgrReader.Release();
00089         }
00090     }
00091     catch (ivd_Error &ie) {
00092         log_DBG_m(dbg_LOW,
00093             "Problems writing over network. Thread going down." << endl <<
00094             "Error: " << ie);
00095     }
00096     catch (ivd_Exception &ie) {
00097         log_DBG_m(dbg_LOW,
00098             "Problems writing over network. Thread going down." << endl <<
00099             "Error: " << ie);
00100     }
00101     if (m_blkManager.GetBlocksWritten() != blksFromMgr) {
00102         log_ERR_m(
00103             "Written: " << m_blkManager.GetBlocksWritten() <<
00104             " Read : " << blksFromMgr);
00105     }
00106     log_DBG_m(dbg_NORM,
00107         m_mgrReader.GetReaderIdx() <<
00108         " End of data. Blocks: " << blksFromMgr);
00109 }

Here is the call graph for this function:


Member Data Documentation

Definition at line 451 of file df.h.

Referenced by Run().

Definition at line 452 of file df.h.

Referenced by Run().

i_UploadAgent_var blk_NetWriter::m_uploadAgent [protected]

Definition at line 453 of file df.h.

Referenced by Run().

Reimplemented from cmn_Thread.

Definition at line 458 of file df.h.


The documentation for this class was generated from the following files:

Generated on Mon Feb 27 19:02:12 2012 for OPENARCHIVE by  doxygen 1.5.6