1*51ba086bSDamjan Jovanovic /************************************************************** 2*51ba086bSDamjan Jovanovic * 3*51ba086bSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*51ba086bSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*51ba086bSDamjan Jovanovic * distributed with this work for additional information 6*51ba086bSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*51ba086bSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*51ba086bSDamjan Jovanovic * "License"); you may not use this file except in compliance 9*51ba086bSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*51ba086bSDamjan Jovanovic * 11*51ba086bSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*51ba086bSDamjan Jovanovic * 13*51ba086bSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*51ba086bSDamjan Jovanovic * software distributed under the License is distributed on an 15*51ba086bSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*51ba086bSDamjan Jovanovic * KIND, either express or implied. See the License for the 17*51ba086bSDamjan Jovanovic * specific language governing permissions and limitations 18*51ba086bSDamjan Jovanovic * under the License. 19*51ba086bSDamjan Jovanovic * 20*51ba086bSDamjan Jovanovic *************************************************************/ 21*51ba086bSDamjan Jovanovic 22*51ba086bSDamjan Jovanovic 23*51ba086bSDamjan Jovanovic #ifndef INCLUDED_CURLINPUTSTREAM_HXX 24*51ba086bSDamjan Jovanovic #define INCLUDED_CURLINPUTSTREAM_HXX 25*51ba086bSDamjan Jovanovic 26*51ba086bSDamjan Jovanovic #include <sal/types.h> 27*51ba086bSDamjan Jovanovic #include <rtl/ustring.hxx> 28*51ba086bSDamjan Jovanovic #include <cppuhelper/weak.hxx> 29*51ba086bSDamjan Jovanovic #include <com/sun/star/io/XInputStream.hpp> 30*51ba086bSDamjan Jovanovic #include <com/sun/star/io/XSeekable.hpp> 31*51ba086bSDamjan Jovanovic 32*51ba086bSDamjan Jovanovic 33*51ba086bSDamjan Jovanovic namespace http_dav_ucp 34*51ba086bSDamjan Jovanovic { 35*51ba086bSDamjan Jovanovic 36*51ba086bSDamjan Jovanovic // ------------------------------------------------------------------- 37*51ba086bSDamjan Jovanovic // CurlInputStream 38*51ba086bSDamjan Jovanovic // A simple XInputStream implementation provided specifically for use 39*51ba086bSDamjan Jovanovic // by the DAVSession::GET method. 40*51ba086bSDamjan Jovanovic // ------------------------------------------------------------------- 41*51ba086bSDamjan Jovanovic class CurlInputStream : public ::com::sun::star::io::XInputStream, 42*51ba086bSDamjan Jovanovic public ::com::sun::star::io::XSeekable, 43*51ba086bSDamjan Jovanovic public ::cppu::OWeakObject 44*51ba086bSDamjan Jovanovic { 45*51ba086bSDamjan Jovanovic private: 46*51ba086bSDamjan Jovanovic com::sun::star::uno::Sequence< sal_Int8 > mInputBuffer; 47*51ba086bSDamjan Jovanovic sal_Int64 mLen; 48*51ba086bSDamjan Jovanovic sal_Int64 mPos; 49*51ba086bSDamjan Jovanovic sal_Int64 mCapacity; 50*51ba086bSDamjan Jovanovic 51*51ba086bSDamjan Jovanovic public: 52*51ba086bSDamjan Jovanovic CurlInputStream( void ); 53*51ba086bSDamjan Jovanovic virtual ~CurlInputStream(); 54*51ba086bSDamjan Jovanovic 55*51ba086bSDamjan Jovanovic // Add some data to the end of the stream 56*51ba086bSDamjan Jovanovic void AddToStream( const char * inBuf, sal_Int32 inLen ); 57*51ba086bSDamjan Jovanovic 58*51ba086bSDamjan Jovanovic // XInterface 59*51ba086bSDamjan Jovanovic virtual com::sun::star::uno::Any SAL_CALL queryInterface( 60*51ba086bSDamjan Jovanovic const ::com::sun::star::uno::Type & type ) 61*51ba086bSDamjan Jovanovic throw( ::com::sun::star::uno::RuntimeException ); 62*51ba086bSDamjan Jovanovic acquire(void)63*51ba086bSDamjan Jovanovic virtual void SAL_CALL acquire( void ) 64*51ba086bSDamjan Jovanovic throw () 65*51ba086bSDamjan Jovanovic { OWeakObject::acquire(); } 66*51ba086bSDamjan Jovanovic release(void)67*51ba086bSDamjan Jovanovic virtual void SAL_CALL release( void ) 68*51ba086bSDamjan Jovanovic throw() 69*51ba086bSDamjan Jovanovic { OWeakObject::release(); } 70*51ba086bSDamjan Jovanovic 71*51ba086bSDamjan Jovanovic 72*51ba086bSDamjan Jovanovic // XInputStream 73*51ba086bSDamjan Jovanovic virtual sal_Int32 SAL_CALL readBytes( 74*51ba086bSDamjan Jovanovic ::com::sun::star::uno::Sequence< sal_Int8 > & aData, 75*51ba086bSDamjan Jovanovic sal_Int32 nBytesToRead ) 76*51ba086bSDamjan Jovanovic throw( ::com::sun::star::io::NotConnectedException, 77*51ba086bSDamjan Jovanovic ::com::sun::star::io::BufferSizeExceededException, 78*51ba086bSDamjan Jovanovic ::com::sun::star::io::IOException, 79*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 80*51ba086bSDamjan Jovanovic 81*51ba086bSDamjan Jovanovic virtual sal_Int32 SAL_CALL readSomeBytes( 82*51ba086bSDamjan Jovanovic ::com::sun::star::uno::Sequence< sal_Int8 > & aData, 83*51ba086bSDamjan Jovanovic sal_Int32 nMaxBytesToRead ) 84*51ba086bSDamjan Jovanovic throw( ::com::sun::star::io::NotConnectedException, 85*51ba086bSDamjan Jovanovic ::com::sun::star::io::BufferSizeExceededException, 86*51ba086bSDamjan Jovanovic ::com::sun::star::io::IOException, 87*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 88*51ba086bSDamjan Jovanovic 89*51ba086bSDamjan Jovanovic virtual void SAL_CALL skipBytes( sal_Int32 nBytesToSkip ) 90*51ba086bSDamjan Jovanovic throw( ::com::sun::star::io::NotConnectedException, 91*51ba086bSDamjan Jovanovic ::com::sun::star::io::BufferSizeExceededException, 92*51ba086bSDamjan Jovanovic ::com::sun::star::io::IOException, 93*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 94*51ba086bSDamjan Jovanovic 95*51ba086bSDamjan Jovanovic virtual sal_Int32 SAL_CALL available( void ) 96*51ba086bSDamjan Jovanovic throw( ::com::sun::star::io::NotConnectedException, 97*51ba086bSDamjan Jovanovic ::com::sun::star::io::IOException, 98*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 99*51ba086bSDamjan Jovanovic 100*51ba086bSDamjan Jovanovic virtual void SAL_CALL closeInput( void ) 101*51ba086bSDamjan Jovanovic throw( ::com::sun::star::io::NotConnectedException, 102*51ba086bSDamjan Jovanovic ::com::sun::star::io::IOException, 103*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 104*51ba086bSDamjan Jovanovic 105*51ba086bSDamjan Jovanovic // XSeekable 106*51ba086bSDamjan Jovanovic virtual void SAL_CALL seek( sal_Int64 location ) 107*51ba086bSDamjan Jovanovic throw( ::com::sun::star::lang::IllegalArgumentException, 108*51ba086bSDamjan Jovanovic ::com::sun::star::io::IOException, 109*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 110*51ba086bSDamjan Jovanovic 111*51ba086bSDamjan Jovanovic virtual sal_Int64 SAL_CALL getPosition() 112*51ba086bSDamjan Jovanovic throw( ::com::sun::star::io::IOException, 113*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 114*51ba086bSDamjan Jovanovic 115*51ba086bSDamjan Jovanovic virtual sal_Int64 SAL_CALL getLength() 116*51ba086bSDamjan Jovanovic throw( ::com::sun::star::io::IOException, 117*51ba086bSDamjan Jovanovic ::com::sun::star::uno::RuntimeException ); 118*51ba086bSDamjan Jovanovic }; 119*51ba086bSDamjan Jovanovic 120*51ba086bSDamjan Jovanovic } // namespace http_dav_ucp 121*51ba086bSDamjan Jovanovic 122*51ba086bSDamjan Jovanovic #endif // INCLUDED_CURLINPUTSTREAM_HXX 123