xref: /trunk/main/ucb/source/ucp/webdav/CurlInputStream.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
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