LCOV - code coverage report
Current view: top level - connectivity/source/drivers/firebird - Blob.hxx (source / functions) Hit Total Coverage
Test: commit 0e63ca4fde4e446f346e35849c756a30ca294aab Lines: 0 1 0.0 %
Date: 2014-04-11 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  */
       9             : 
      10             : #ifndef CONNECTIVITY_FIREBIRD_BLOB_HXX
      11             : #define CONNECTIVITY_FIREBIRD_BLOB_HXX
      12             : 
      13             : #include <ibase.h>
      14             : 
      15             : #include <cppuhelper/compbase2.hxx>
      16             : 
      17             : #include <com/sun/star/io/XInputStream.hpp>
      18             : #include <com/sun/star/sdbc/XBlob.hpp>
      19             : 
      20             : namespace connectivity
      21             : {
      22             :     namespace firebird
      23             :     {
      24             :         typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::sdbc::XBlob,
      25             :                                                   ::com::sun::star::io::XInputStream >
      26             :             Blob_BASE;
      27             : 
      28           0 :         class Blob :
      29             :             public Blob_BASE
      30             :         {
      31             :         protected:
      32             :             ::osl::Mutex                    m_aMutex;
      33             : 
      34             :             isc_db_handle*      m_pDatabaseHandle;
      35             :             isc_tr_handle*      m_pTransactionHandle;
      36             :             // We store our own copy of the blob id as typically the statement
      37             :             // manages it's own blob id, and blobs are independent of a statement
      38             :             // in firebird.
      39             :             ISC_QUAD            m_blobID;
      40             :             isc_blob_handle     m_blobHandle;
      41             : 
      42             :             bool                m_bBlobOpened;
      43             :             sal_Int64           m_nBlobLength;
      44             :             sal_Int64           m_nBlobPosition;
      45             : 
      46             :             ISC_STATUS_ARRAY    m_statusVector;
      47             : 
      48             :             void ensureBlobIsOpened()
      49             :                 throw(::com::sun::star::sdbc::SQLException);
      50             :             /**
      51             :              * Closes the blob and cleans up resources -- can be used to reset
      52             :              * the blob if we e.g. want to read from the beginning again.
      53             :              */
      54             :             void closeBlob()
      55             :                 throw(::com::sun::star::sdbc::SQLException);
      56             : 
      57             :         public:
      58             :             Blob(isc_db_handle* pDatabaseHandle,
      59             :                  isc_tr_handle* pTransactionHandle,
      60             :                  ISC_QUAD& aBlobID);
      61             : 
      62             :             // ---- XBlob ----------------------------------------------------
      63             :             virtual sal_Int64 SAL_CALL
      64             :                 length()
      65             :                 throw(::com::sun::star::sdbc::SQLException,
      66             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
      67             :             virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL
      68             :                 getBytes(sal_Int64 aPosition, sal_Int32 aLength)
      69             :                 throw(::com::sun::star::sdbc::SQLException,
      70             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
      71             :             virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL
      72             :                 getBinaryStream()
      73             :                 throw(::com::sun::star::sdbc::SQLException,
      74             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
      75             :             virtual sal_Int64 SAL_CALL
      76             :                 position(const ::com::sun::star::uno::Sequence< sal_Int8 >& rPattern,
      77             :                          sal_Int64 aStart)
      78             :                 throw(::com::sun::star::sdbc::SQLException,
      79             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
      80             :             virtual sal_Int64 SAL_CALL
      81             :                 positionOfBlob(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& rPattern,
      82             :                                sal_Int64 aStart)
      83             :                 throw(::com::sun::star::sdbc::SQLException,
      84             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
      85             : 
      86             :             // ---- XInputStream ----------------------------------------------
      87             :             virtual sal_Int32 SAL_CALL
      88             :                 readBytes(::com::sun::star::uno::Sequence< sal_Int8 >& rDataOut,
      89             :                           sal_Int32 nBytes)
      90             :                 throw(::com::sun::star::io::NotConnectedException,
      91             :                       ::com::sun::star::io::BufferSizeExceededException,
      92             :                       ::com::sun::star::io::IOException,
      93             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
      94             :             virtual sal_Int32 SAL_CALL
      95             :                 readSomeBytes(::com::sun::star::uno::Sequence< sal_Int8 >& rDataOut,
      96             :                               sal_Int32 nMaximumBytes)
      97             :                 throw(::com::sun::star::io::NotConnectedException,
      98             :                       ::com::sun::star::io::BufferSizeExceededException,
      99             :                         ::com::sun::star::io::IOException,
     100             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
     101             :             virtual void SAL_CALL
     102             :                 skipBytes(sal_Int32 nBytes)
     103             :                 throw(::com::sun::star::io::NotConnectedException,
     104             :                       ::com::sun::star::io::BufferSizeExceededException,
     105             :                       ::com::sun::star::io::IOException,
     106             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
     107             :             virtual sal_Int32 SAL_CALL
     108             :                 available()
     109             :                 throw(::com::sun::star::io::NotConnectedException,
     110             :                       ::com::sun::star::io::IOException,
     111             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
     112             :             virtual void SAL_CALL
     113             :                 closeInput()
     114             :                 throw(::com::sun::star::io::NotConnectedException,
     115             :                       ::com::sun::star::io::IOException,
     116             :                       ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
     117             : 
     118             :             // ---- OComponentHelper ------------------------------------------
     119             :             virtual void SAL_CALL disposing() SAL_OVERRIDE;
     120             :         };
     121             :     }
     122             : 
     123             : }
     124             : 
     125             : #endif //CONNECTIVITY_FIREBIRD_BLOB_HXX
     126             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10