1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #include "precompiled_sw.hxx" 28 #include <retrieveinputstreamconsumer.hxx> 29 #include <ndgrf.hxx> 30 #include <retrieveinputstream.hxx> 31 #include <swthreadmanager.hxx> 32 33 /** class to provide creation of a thread to retrieve an input stream given by 34 an URL and to consume the retrieved input stream. 35 36 OD 2007-01-29 #i73788# 37 38 @author OD 39 */ 40 SwAsyncRetrieveInputStreamThreadConsumer::SwAsyncRetrieveInputStreamThreadConsumer( 41 SwGrfNode& rGrfNode ) 42 : mrGrfNode( rGrfNode ), 43 mnThreadID( 0 ) 44 { 45 } 46 47 SwAsyncRetrieveInputStreamThreadConsumer::~SwAsyncRetrieveInputStreamThreadConsumer() 48 { 49 SwThreadManager::GetThreadManager().RemoveThread( mnThreadID ); 50 } 51 52 void SwAsyncRetrieveInputStreamThreadConsumer::CreateThread( const String& rURL ) 53 { 54 // Get new data container for input stream data 55 SwRetrievedInputStreamDataManager::tDataKey nDataKey = 56 SwRetrievedInputStreamDataManager::GetManager().ReserveData( 57 mrGrfNode.GetThreadConsumer() ); 58 59 rtl::Reference< ObservableThread > pNewThread = 60 SwAsyncRetrieveInputStreamThread::createThread( nDataKey, rURL ); 61 62 // Add thread to thread manager and pass ownership of thread to thread manager. 63 mnThreadID = SwThreadManager::GetThreadManager().AddThread( pNewThread ); 64 } 65 66 void SwAsyncRetrieveInputStreamThreadConsumer::ApplyInputStream( 67 com::sun::star::uno::Reference<com::sun::star::io::XInputStream> xInputStream, 68 const sal_Bool bIsStreamReadOnly ) 69 { 70 mrGrfNode.ApplyInputStream( xInputStream, bIsStreamReadOnly ); 71 } 72 73