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