diff options
Diffstat (limited to 'bridges/source/remote/urp/urp_log.cxx')
-rw-r--r-- | bridges/source/remote/urp/urp_log.cxx | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/bridges/source/remote/urp/urp_log.cxx b/bridges/source/remote/urp/urp_log.cxx new file mode 100644 index 000000000000..48c8543a8ebd --- /dev/null +++ b/bridges/source/remote/urp/urp_log.cxx @@ -0,0 +1,150 @@ +/* -*- 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_bridges.hxx" +#include <osl/time.h> +#include "urp_bridgeimpl.hxx" +#include "urp_log.hxx" + +using namespace ::rtl; +using namespace ::osl; +namespace bridges_urp +{ +#ifdef BRIDGES_URP_PROT + Mutex g_logFileMutex; + + class FileAccess + { + public: + FileAccess( urp_BridgeImpl *pBridgeImpl_ ) : + pBridgeImpl( pBridgeImpl_ ), + guard( g_logFileMutex ) + { + if( pBridgeImpl->m_pLogFile ) + { + f = pBridgeImpl->m_pLogFile; + } + else + { + f = fopen( pBridgeImpl->m_sLogFileName.getStr() , "a" ); + } + } + ~FileAccess() + { + if( ! pBridgeImpl->m_pLogFile ) + { + fclose( f ); + } + } + FILE *getFile() + { + return f; + } + private: + urp_BridgeImpl *pBridgeImpl; + MutexGuard guard; + FILE *f; + }; + + void urp_logCall( urp_BridgeImpl *pBridgeImpl, sal_Int32 nSize, sal_Int32 nUseData, sal_Bool bSynchron , + const ::rtl::OUString &sMethodName ) + { + if( pBridgeImpl->m_sLogFileName.getLength() && getenv( "PROT_REMOTE_ACTIVATE" ) ) + { + OString sOperation = OUStringToOString( sMethodName,RTL_TEXTENCODING_ASCII_US ); + + FileAccess access( pBridgeImpl ); + fprintf( access.getFile() , + "%06u: calling [size=%d(usedata=%d)] [synchron=%d] [name=%s]\n" , + static_cast< unsigned int > (osl_getGlobalTimer()), + static_cast< int > (nSize), + static_cast< int > (nUseData), + bSynchron, sOperation.pData->buffer ); + } + } + + void urp_logServingRequest( urp_BridgeImpl *pBridgeImpl, + sal_Int32 nSize, sal_Int32 nUseData, sal_Bool bSynchron , + const ::rtl::OUString &sMethodName ) + { + if( pBridgeImpl->m_sLogFileName.getLength() && getenv( "PROT_REMOTE_ACTIVATE" ) ) + { + OString sOperation = OUStringToOString( sMethodName,RTL_TEXTENCODING_ASCII_US ); + + FileAccess access( pBridgeImpl ); + fprintf( + access.getFile(), + "%06u: serving request [size=%d(usedata=%d)] [synchron=%d] [name=%s]\n", + static_cast< unsigned int > (osl_getGlobalTimer()), + static_cast< int > (nSize), + static_cast< int > (nUseData), + bSynchron, + sOperation.pData->buffer + ); + } + } + + void urp_logGettingReply( urp_BridgeImpl *pBridgeImpl, + sal_Int32 nSize, sal_Int32 nUseData, + const ::rtl::OUString &sMethodName ) + { + if( pBridgeImpl->m_sLogFileName.getLength() && getenv( "PROT_REMOTE_ACTIVATE" ) ) + { + OString sOperation = OUStringToOString( sMethodName,RTL_TEXTENCODING_ASCII_US ); + FileAccess access( pBridgeImpl ); + fprintf( access.getFile(), + "%06u: getting reply [size=%d(usedata=%d)][name=%s]\n" , + static_cast< unsigned int > (osl_getGlobalTimer()), + static_cast< int > (nSize), + static_cast< int > (nUseData), + sOperation.pData->buffer); + } + } + + void urp_logReplying( urp_BridgeImpl *pBridgeImpl, + sal_Int32 nSize , sal_Int32 nUseData, + const ::rtl::OUString &sMethodName ) + { + if( pBridgeImpl->m_sLogFileName.getLength() && getenv( "PROT_REMOTE_ACTIVATE" ) ) + { + OString sOperation = OUStringToOString(sMethodName,RTL_TEXTENCODING_ASCII_US); + + FileAccess access( pBridgeImpl ); + fprintf( access.getFile(), + "%06u: replying [size=%d(usedata=%d)] [name=%s]\n", + static_cast< unsigned int > (osl_getGlobalTimer()), + static_cast< int > (nSize), + static_cast< int > (nUseData), + sOperation.pData->buffer); + } + } +#endif +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |