xref: /AOO42X/main/ucb/source/ucp/webdav/CurlInputStream.hxx (revision 9bce9b0d387299c68bd81d539e1478357a103de5)
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