1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 25*b1cdbd2cSJim Jagielski #include "precompiled_extensions.hxx" 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include "log_module.hxx" 28*b1cdbd2cSJim Jagielski #include "methodguard.hxx" 29*b1cdbd2cSJim Jagielski #include "loghandler.hxx" 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/ 32*b1cdbd2cSJim Jagielski #include <com/sun/star/logging/XConsoleHandler.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/logging/LogLevel.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XInitialization.hpp> 36*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/AlreadyInitializedException.hpp> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/IllegalArgumentException.hpp> 38*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/NamedValue.hpp> 39*b1cdbd2cSJim Jagielski /** === end UNO includes === **/ 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski #include <tools/diagnose_ex.h> 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski #include <comphelper/componentcontext.hxx> 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski #include <cppuhelper/compbase3.hxx> 46*b1cdbd2cSJim Jagielski #include <cppuhelper/basemutex.hxx> 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski #include <stdio.h> 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski //........................................................................ 51*b1cdbd2cSJim Jagielski namespace logging 52*b1cdbd2cSJim Jagielski { 53*b1cdbd2cSJim Jagielski //........................................................................ 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski /** === begin UNO using === **/ 56*b1cdbd2cSJim Jagielski using ::com::sun::star::logging::XConsoleHandler; 57*b1cdbd2cSJim Jagielski using ::com::sun::star::lang::XServiceInfo; 58*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Reference; 59*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::XComponentContext; 60*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::RuntimeException; 61*b1cdbd2cSJim Jagielski using ::com::sun::star::logging::XLogFormatter; 62*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Sequence; 63*b1cdbd2cSJim Jagielski using ::com::sun::star::logging::LogRecord; 64*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::UNO_QUERY_THROW; 65*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Exception; 66*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Any; 67*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::XInterface; 68*b1cdbd2cSJim Jagielski using ::com::sun::star::lang::XInitialization; 69*b1cdbd2cSJim Jagielski using ::com::sun::star::ucb::AlreadyInitializedException; 70*b1cdbd2cSJim Jagielski using ::com::sun::star::lang::IllegalArgumentException; 71*b1cdbd2cSJim Jagielski using ::com::sun::star::beans::NamedValue; 72*b1cdbd2cSJim Jagielski /** === end UNO using === **/ 73*b1cdbd2cSJim Jagielski namespace LogLevel = ::com::sun::star::logging::LogLevel; 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski //==================================================================== 76*b1cdbd2cSJim Jagielski //= ConsoleHandler - declaration 77*b1cdbd2cSJim Jagielski //==================================================================== 78*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 79*b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper3 < XConsoleHandler 80*b1cdbd2cSJim Jagielski , XServiceInfo 81*b1cdbd2cSJim Jagielski , XInitialization 82*b1cdbd2cSJim Jagielski > ConsoleHandler_Base; 83*b1cdbd2cSJim Jagielski class ConsoleHandler :public ::cppu::BaseMutex 84*b1cdbd2cSJim Jagielski ,public ConsoleHandler_Base 85*b1cdbd2cSJim Jagielski { 86*b1cdbd2cSJim Jagielski private: 87*b1cdbd2cSJim Jagielski ::comphelper::ComponentContext m_aContext; 88*b1cdbd2cSJim Jagielski LogHandlerHelper m_aHandlerHelper; 89*b1cdbd2cSJim Jagielski sal_Int32 m_nThreshold; 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski protected: 92*b1cdbd2cSJim Jagielski ConsoleHandler( const Reference< XComponentContext >& _rxContext ); 93*b1cdbd2cSJim Jagielski virtual ~ConsoleHandler(); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski // XConsoleHandler 96*b1cdbd2cSJim Jagielski virtual ::sal_Int32 SAL_CALL getThreshold() throw (RuntimeException); 97*b1cdbd2cSJim Jagielski virtual void SAL_CALL setThreshold( ::sal_Int32 _threshold ) throw (RuntimeException); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski // XLogHandler 100*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getEncoding() throw (RuntimeException); 101*b1cdbd2cSJim Jagielski virtual void SAL_CALL setEncoding( const ::rtl::OUString& _encoding ) throw (RuntimeException); 102*b1cdbd2cSJim Jagielski virtual Reference< XLogFormatter > SAL_CALL getFormatter() throw (RuntimeException); 103*b1cdbd2cSJim Jagielski virtual void SAL_CALL setFormatter( const Reference< XLogFormatter >& _formatter ) throw (RuntimeException); 104*b1cdbd2cSJim Jagielski virtual ::sal_Int32 SAL_CALL getLevel() throw (RuntimeException); 105*b1cdbd2cSJim Jagielski virtual void SAL_CALL setLevel( ::sal_Int32 _level ) throw (RuntimeException); 106*b1cdbd2cSJim Jagielski virtual void SAL_CALL flush( ) throw (RuntimeException); 107*b1cdbd2cSJim Jagielski virtual ::sal_Bool SAL_CALL publish( const LogRecord& Record ) throw (RuntimeException); 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski // XInitialization 110*b1cdbd2cSJim Jagielski virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski // XServiceInfo 113*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getImplementationName() throw(RuntimeException); 114*b1cdbd2cSJim Jagielski virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException); 115*b1cdbd2cSJim Jagielski virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException); 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski // OComponentHelper 118*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing(); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski public: 121*b1cdbd2cSJim Jagielski // XServiceInfo - static version 122*b1cdbd2cSJim Jagielski static ::rtl::OUString SAL_CALL getImplementationName_static(); 123*b1cdbd2cSJim Jagielski static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); 124*b1cdbd2cSJim Jagielski static Reference< XInterface > Create( const Reference< XComponentContext >& _rxContext ); 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski public: 127*b1cdbd2cSJim Jagielski typedef ComponentMethodGuard< ConsoleHandler > MethodGuard; 128*b1cdbd2cSJim Jagielski void enterMethod( MethodGuard::Access ); 129*b1cdbd2cSJim Jagielski void leaveMethod( MethodGuard::Access ); 130*b1cdbd2cSJim Jagielski }; 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski //==================================================================== 133*b1cdbd2cSJim Jagielski //= ConsoleHandler - implementation 134*b1cdbd2cSJim Jagielski //==================================================================== 135*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- ConsoleHandler(const Reference<XComponentContext> & _rxContext)136*b1cdbd2cSJim Jagielski ConsoleHandler::ConsoleHandler( const Reference< XComponentContext >& _rxContext ) 137*b1cdbd2cSJim Jagielski :ConsoleHandler_Base( m_aMutex ) 138*b1cdbd2cSJim Jagielski ,m_aContext( _rxContext ) 139*b1cdbd2cSJim Jagielski ,m_aHandlerHelper( _rxContext, m_aMutex, rBHelper ) 140*b1cdbd2cSJim Jagielski ,m_nThreshold( LogLevel::SEVERE ) 141*b1cdbd2cSJim Jagielski { 142*b1cdbd2cSJim Jagielski } 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- ~ConsoleHandler()145*b1cdbd2cSJim Jagielski ConsoleHandler::~ConsoleHandler() 146*b1cdbd2cSJim Jagielski { 147*b1cdbd2cSJim Jagielski if ( !rBHelper.bDisposed ) 148*b1cdbd2cSJim Jagielski { 149*b1cdbd2cSJim Jagielski acquire(); 150*b1cdbd2cSJim Jagielski dispose(); 151*b1cdbd2cSJim Jagielski } 152*b1cdbd2cSJim Jagielski } 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- disposing()155*b1cdbd2cSJim Jagielski void SAL_CALL ConsoleHandler::disposing() 156*b1cdbd2cSJim Jagielski { 157*b1cdbd2cSJim Jagielski m_aHandlerHelper.setFormatter( NULL ); 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- enterMethod(MethodGuard::Access)161*b1cdbd2cSJim Jagielski void ConsoleHandler::enterMethod( MethodGuard::Access ) 162*b1cdbd2cSJim Jagielski { 163*b1cdbd2cSJim Jagielski m_aHandlerHelper.enterMethod(); 164*b1cdbd2cSJim Jagielski } 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- leaveMethod(MethodGuard::Access)167*b1cdbd2cSJim Jagielski void ConsoleHandler::leaveMethod( MethodGuard::Access ) 168*b1cdbd2cSJim Jagielski { 169*b1cdbd2cSJim Jagielski m_aMutex.release(); 170*b1cdbd2cSJim Jagielski } 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getThreshold()173*b1cdbd2cSJim Jagielski ::sal_Int32 SAL_CALL ConsoleHandler::getThreshold() throw (RuntimeException) 174*b1cdbd2cSJim Jagielski { 175*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 176*b1cdbd2cSJim Jagielski return m_nThreshold; 177*b1cdbd2cSJim Jagielski } 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- setThreshold(::sal_Int32 _threshold)180*b1cdbd2cSJim Jagielski void SAL_CALL ConsoleHandler::setThreshold( ::sal_Int32 _threshold ) throw (RuntimeException) 181*b1cdbd2cSJim Jagielski { 182*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 183*b1cdbd2cSJim Jagielski m_nThreshold = _threshold; 184*b1cdbd2cSJim Jagielski } 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getEncoding()187*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL ConsoleHandler::getEncoding() throw (RuntimeException) 188*b1cdbd2cSJim Jagielski { 189*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 190*b1cdbd2cSJim Jagielski ::rtl::OUString sEncoding; 191*b1cdbd2cSJim Jagielski OSL_VERIFY( m_aHandlerHelper.getEncoding( sEncoding ) ); 192*b1cdbd2cSJim Jagielski return sEncoding; 193*b1cdbd2cSJim Jagielski } 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- setEncoding(const::rtl::OUString & _rEncoding)196*b1cdbd2cSJim Jagielski void SAL_CALL ConsoleHandler::setEncoding( const ::rtl::OUString& _rEncoding ) throw (RuntimeException) 197*b1cdbd2cSJim Jagielski { 198*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 199*b1cdbd2cSJim Jagielski OSL_VERIFY( m_aHandlerHelper.setEncoding( _rEncoding ) ); 200*b1cdbd2cSJim Jagielski } 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getFormatter()203*b1cdbd2cSJim Jagielski Reference< XLogFormatter > SAL_CALL ConsoleHandler::getFormatter() throw (RuntimeException) 204*b1cdbd2cSJim Jagielski { 205*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 206*b1cdbd2cSJim Jagielski return m_aHandlerHelper.getFormatter(); 207*b1cdbd2cSJim Jagielski } 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- setFormatter(const Reference<XLogFormatter> & _rxFormatter)210*b1cdbd2cSJim Jagielski void SAL_CALL ConsoleHandler::setFormatter( const Reference< XLogFormatter >& _rxFormatter ) throw (RuntimeException) 211*b1cdbd2cSJim Jagielski { 212*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 213*b1cdbd2cSJim Jagielski m_aHandlerHelper.setFormatter( _rxFormatter ); 214*b1cdbd2cSJim Jagielski } 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getLevel()217*b1cdbd2cSJim Jagielski ::sal_Int32 SAL_CALL ConsoleHandler::getLevel() throw (RuntimeException) 218*b1cdbd2cSJim Jagielski { 219*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 220*b1cdbd2cSJim Jagielski return m_aHandlerHelper.getLevel(); 221*b1cdbd2cSJim Jagielski } 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- setLevel(::sal_Int32 _nLevel)224*b1cdbd2cSJim Jagielski void SAL_CALL ConsoleHandler::setLevel( ::sal_Int32 _nLevel ) throw (RuntimeException) 225*b1cdbd2cSJim Jagielski { 226*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 227*b1cdbd2cSJim Jagielski m_aHandlerHelper.setLevel( _nLevel ); 228*b1cdbd2cSJim Jagielski } 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- flush()231*b1cdbd2cSJim Jagielski void SAL_CALL ConsoleHandler::flush( ) throw (RuntimeException) 232*b1cdbd2cSJim Jagielski { 233*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 234*b1cdbd2cSJim Jagielski fflush( stdout ); 235*b1cdbd2cSJim Jagielski fflush( stderr ); 236*b1cdbd2cSJim Jagielski } 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- publish(const LogRecord & _rRecord)239*b1cdbd2cSJim Jagielski ::sal_Bool SAL_CALL ConsoleHandler::publish( const LogRecord& _rRecord ) throw (RuntimeException) 240*b1cdbd2cSJim Jagielski { 241*b1cdbd2cSJim Jagielski MethodGuard aGuard( *this ); 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski ::rtl::OString sEntry; 244*b1cdbd2cSJim Jagielski if ( !m_aHandlerHelper.formatForPublishing( _rRecord, sEntry ) ) 245*b1cdbd2cSJim Jagielski return sal_False; 246*b1cdbd2cSJim Jagielski 247*b1cdbd2cSJim Jagielski if ( _rRecord.Level >= m_nThreshold ) 248*b1cdbd2cSJim Jagielski fprintf( stderr, sEntry.getStr() ); 249*b1cdbd2cSJim Jagielski else 250*b1cdbd2cSJim Jagielski fprintf( stdout, sEntry.getStr() ); 251*b1cdbd2cSJim Jagielski 252*b1cdbd2cSJim Jagielski return sal_True; 253*b1cdbd2cSJim Jagielski } 254*b1cdbd2cSJim Jagielski 255*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- initialize(const Sequence<Any> & _rArguments)256*b1cdbd2cSJim Jagielski void SAL_CALL ConsoleHandler::initialize( const Sequence< Any >& _rArguments ) throw (Exception, RuntimeException) 257*b1cdbd2cSJim Jagielski { 258*b1cdbd2cSJim Jagielski ::osl::MutexGuard aGuard( m_aMutex ); 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski if ( m_aHandlerHelper.getIsInitialized() ) 261*b1cdbd2cSJim Jagielski throw AlreadyInitializedException(); 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski if ( _rArguments.getLength() == 0 ) 264*b1cdbd2cSJim Jagielski { // create() - nothing to init 265*b1cdbd2cSJim Jagielski m_aHandlerHelper.setIsInitialized(); 266*b1cdbd2cSJim Jagielski return; 267*b1cdbd2cSJim Jagielski } 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski if ( _rArguments.getLength() != 1 ) 270*b1cdbd2cSJim Jagielski throw IllegalArgumentException( ::rtl::OUString(), *this, 1 ); 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski Sequence< NamedValue > aSettings; 273*b1cdbd2cSJim Jagielski if ( !( _rArguments[0] >>= aSettings ) ) 274*b1cdbd2cSJim Jagielski throw IllegalArgumentException( ::rtl::OUString(), *this, 1 ); 275*b1cdbd2cSJim Jagielski 276*b1cdbd2cSJim Jagielski // createWithSettings( [in] sequence< ::com::sun::star::beans::NamedValue > Settings ) 277*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection aTypedSettings( aSettings ); 278*b1cdbd2cSJim Jagielski m_aHandlerHelper.initFromSettings( aTypedSettings ); 279*b1cdbd2cSJim Jagielski 280*b1cdbd2cSJim Jagielski aTypedSettings.get_ensureType( "Threshold", m_nThreshold ); 281*b1cdbd2cSJim Jagielski 282*b1cdbd2cSJim Jagielski m_aHandlerHelper.setIsInitialized(); 283*b1cdbd2cSJim Jagielski } 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getImplementationName()286*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL ConsoleHandler::getImplementationName() throw(RuntimeException) 287*b1cdbd2cSJim Jagielski { 288*b1cdbd2cSJim Jagielski return getImplementationName_static(); 289*b1cdbd2cSJim Jagielski } 290*b1cdbd2cSJim Jagielski 291*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- supportsService(const::rtl::OUString & _rServiceName)292*b1cdbd2cSJim Jagielski ::sal_Bool SAL_CALL ConsoleHandler::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException) 293*b1cdbd2cSJim Jagielski { 294*b1cdbd2cSJim Jagielski const Sequence< ::rtl::OUString > aServiceNames( getSupportedServiceNames() ); 295*b1cdbd2cSJim Jagielski for ( const ::rtl::OUString* pServiceNames = aServiceNames.getConstArray(); 296*b1cdbd2cSJim Jagielski pServiceNames != aServiceNames.getConstArray() + aServiceNames.getLength(); 297*b1cdbd2cSJim Jagielski ++pServiceNames 298*b1cdbd2cSJim Jagielski ) 299*b1cdbd2cSJim Jagielski if ( _rServiceName == *pServiceNames ) 300*b1cdbd2cSJim Jagielski return sal_True; 301*b1cdbd2cSJim Jagielski return sal_False; 302*b1cdbd2cSJim Jagielski } 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getSupportedServiceNames()305*b1cdbd2cSJim Jagielski Sequence< ::rtl::OUString > SAL_CALL ConsoleHandler::getSupportedServiceNames() throw(RuntimeException) 306*b1cdbd2cSJim Jagielski { 307*b1cdbd2cSJim Jagielski return getSupportedServiceNames_static(); 308*b1cdbd2cSJim Jagielski } 309*b1cdbd2cSJim Jagielski 310*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getImplementationName_static()311*b1cdbd2cSJim Jagielski ::rtl::OUString SAL_CALL ConsoleHandler::getImplementationName_static() 312*b1cdbd2cSJim Jagielski { 313*b1cdbd2cSJim Jagielski return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.extensions.ConsoleHandler" ) ); 314*b1cdbd2cSJim Jagielski } 315*b1cdbd2cSJim Jagielski 316*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getSupportedServiceNames_static()317*b1cdbd2cSJim Jagielski Sequence< ::rtl::OUString > SAL_CALL ConsoleHandler::getSupportedServiceNames_static() 318*b1cdbd2cSJim Jagielski { 319*b1cdbd2cSJim Jagielski Sequence< ::rtl::OUString > aServiceNames(1); 320*b1cdbd2cSJim Jagielski aServiceNames[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.logging.ConsoleHandler" ) ); 321*b1cdbd2cSJim Jagielski return aServiceNames; 322*b1cdbd2cSJim Jagielski } 323*b1cdbd2cSJim Jagielski 324*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- Create(const Reference<XComponentContext> & _rxContext)325*b1cdbd2cSJim Jagielski Reference< XInterface > ConsoleHandler::Create( const Reference< XComponentContext >& _rxContext ) 326*b1cdbd2cSJim Jagielski { 327*b1cdbd2cSJim Jagielski return *( new ConsoleHandler( _rxContext ) ); 328*b1cdbd2cSJim Jagielski } 329*b1cdbd2cSJim Jagielski 330*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- createRegistryInfo_ConsoleHandler()331*b1cdbd2cSJim Jagielski void createRegistryInfo_ConsoleHandler() 332*b1cdbd2cSJim Jagielski { 333*b1cdbd2cSJim Jagielski static OAutoRegistration< ConsoleHandler > aAutoRegistration; 334*b1cdbd2cSJim Jagielski } 335*b1cdbd2cSJim Jagielski 336*b1cdbd2cSJim Jagielski //........................................................................ 337*b1cdbd2cSJim Jagielski } // namespace logging 338*b1cdbd2cSJim Jagielski //........................................................................ 339