summaryrefslogtreecommitdiff
path: root/io/source/acceptor/acc_pipe.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'io/source/acceptor/acc_pipe.cxx')
-rw-r--r--io/source/acceptor/acc_pipe.cxx233
1 files changed, 0 insertions, 233 deletions
diff --git a/io/source/acceptor/acc_pipe.cxx b/io/source/acceptor/acc_pipe.cxx
deleted file mode 100644
index 8f9f4a794..000000000
--- a/io/source/acceptor/acc_pipe.cxx
+++ /dev/null
@@ -1,233 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_io.hxx"
-#include "osl/security.hxx"
-#include "acceptor.hxx"
-#include <com/sun/star/connection/ConnectionSetupException.hpp>
-
-#include <cppuhelper/implbase1.hxx>
-
-using namespace ::rtl;
-using namespace ::osl;
-using namespace ::cppu;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::connection;
-using namespace ::com::sun::star::io;
-
-
-namespace io_acceptor
-{
-
- typedef WeakImplHelper1< XConnection > MyPipeConnection;
-
- class PipeConnection :
- public MyPipeConnection
- {
- public:
- PipeConnection( const OUString &sConnectionDescription);
- ~PipeConnection();
-
- virtual sal_Int32 SAL_CALL read( Sequence< sal_Int8 >& aReadBytes, sal_Int32 nBytesToRead )
- throw(::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL write( const Sequence< sal_Int8 >& aData )
- throw(::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL flush( ) throw(
- ::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL close( )
- throw(::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getDescription( )
- throw(::com::sun::star::uno::RuntimeException);
- public:
- ::osl::StreamPipe m_pipe;
- oslInterlockedCount m_nStatus;
- OUString m_sDescription;
- };
-
-
-
- PipeConnection::PipeConnection( const OUString &sConnectionDescription) :
- m_nStatus( 0 ),
- m_sDescription( sConnectionDescription )
- {
- g_moduleCount.modCnt.acquire( &g_moduleCount.modCnt );
-
- // make it unique
- m_sDescription += OUString(RTL_CONSTASCII_USTRINGPARAM(",uniqueValue="));
- m_sDescription += OUString::valueOf(
- sal::static_int_cast<sal_Int64 >(
- reinterpret_cast< sal_IntPtr >(&m_pipe)),
- 10 );
- }
-
- PipeConnection::~PipeConnection()
- {
- g_moduleCount.modCnt.release( &g_moduleCount.modCnt );
- }
-
- sal_Int32 PipeConnection::read( Sequence < sal_Int8 > & aReadBytes , sal_Int32 nBytesToRead )
- throw(::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException)
- {
- if( ! m_nStatus )
- {
- if( aReadBytes.getLength() < nBytesToRead )
- {
- aReadBytes.realloc( nBytesToRead );
- }
- sal_Int32 n = m_pipe.read( aReadBytes.getArray(), nBytesToRead );
- OSL_ASSERT( n >= 0 && n <= aReadBytes.getLength() );
- if( n < aReadBytes.getLength() )
- {
- aReadBytes.realloc( n );
- }
- return n;
- }
- else {
- throw IOException();
- }
- }
-
- void PipeConnection::write( const Sequence < sal_Int8 > &seq )
- throw(::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException)
- {
- if( ! m_nStatus )
- {
- if( m_pipe.write( seq.getConstArray() , seq.getLength() ) != seq.getLength() )
- {
- throw IOException();
- }
- }
- else {
- throw IOException();
- }
- }
-
- void PipeConnection::flush( )
- throw( ::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException)
- {
- }
-
- void PipeConnection::close()
- throw( ::com::sun::star::io::IOException,
- ::com::sun::star::uno::RuntimeException)
- {
- if( 1 == osl_incrementInterlockedCount( (&m_nStatus) ) )
- {
- m_pipe.close();
- }
- }
-
- OUString PipeConnection::getDescription()
- throw(::com::sun::star::uno::RuntimeException)
- {
- return m_sDescription;
- }
-
- /***************
- * PipeAcceptor
- **************/
- PipeAcceptor::PipeAcceptor( const OUString &sPipeName , const OUString & sConnectionDescription) :
- m_sPipeName( sPipeName ),
- m_sConnectionDescription( sConnectionDescription ),
- m_bClosed( sal_False )
- {
- }
-
-
- void PipeAcceptor::init()
- {
- m_pipe = Pipe( m_sPipeName.pData , osl_Pipe_CREATE , osl::Security() );
- if( ! m_pipe.is() )
- {
- OUString error = OUString(RTL_CONSTASCII_USTRINGPARAM("io.acceptor: Couldn't setup pipe "));
- error += m_sPipeName;
- throw ConnectionSetupException( error, Reference< XInterface > () );
- }
- }
-
- Reference< XConnection > PipeAcceptor::accept( )
- {
- Pipe pipe;
- {
- MutexGuard guard( m_mutex );
- pipe = m_pipe;
- }
- if( ! pipe.is() )
- {
- OUString error = OUString(RTL_CONSTASCII_USTRINGPARAM("io.acceptor: pipe already closed"));
- error += m_sPipeName;
- throw ConnectionSetupException( error, Reference< XInterface > () );
- }
- PipeConnection *pConn = new PipeConnection( m_sConnectionDescription );
-
- oslPipeError status = pipe.accept( pConn->m_pipe );
-
- if( m_bClosed )
- {
- // stopAccepting was called !
- delete pConn;
- return Reference < XConnection >();
- }
- else if( osl_Pipe_E_None == status )
- {
- return Reference < XConnection > ( (XConnection * ) pConn );
- }
- else
- {
- OUString error = OUString(RTL_CONSTASCII_USTRINGPARAM("io.acceptor: Couldn't setup pipe "));
- error += m_sPipeName;
- throw ConnectionSetupException( error, Reference< XInterface > ());
- }
- }
-
- void PipeAcceptor::stopAccepting()
- {
- m_bClosed = sal_True;
- Pipe pipe;
- {
- MutexGuard guard( m_mutex );
- pipe = m_pipe;
- m_pipe.clear();
- }
- if( pipe.is() )
- {
- pipe.close();
- }
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */