You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by af...@apache.org on 2012/02/23 16:52:47 UTC
svn commit: r1292832 [1/4] - /incubator/ooo/trunk/main/ucb/source/ucp/webdav/
Author: af
Date: Thu Feb 23 15:52:46 2012
New Revision: 1292832
URL: http://svn.apache.org/viewvc?rev=1292832&view=rev
Log:
118569: Second part of commit.
Added:
incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPostReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPostReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPropFindReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPropFindReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPropPatchReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPropPatchReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPutReqProcImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfPutReqProcImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessor.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessor.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImpl.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImpl.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImplFac.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImplFac.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfSession.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfSession.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfTypes.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfUri.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfUri.hxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/webdavresponseparser.cxx
incubator/ooo/trunk/main/ucb/source/ucp/webdav/webdavresponseparser.hxx
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,58 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <AprEnv.hxx>
+
+namespace apr_environment
+{
+
+AprEnv::AprEnv()
+ : mpAprPool( 0 )
+{
+ apr_initialize();
+
+ apr_pool_create(&mpAprPool, NULL);
+}
+
+AprEnv::~AprEnv()
+{
+ apr_pool_destroy(mpAprPool);
+
+ apr_terminate();
+}
+
+/* static */
+AprEnv* AprEnv::getAprEnv()
+{
+ static AprEnv rAprEnv;
+
+ return &rAprEnv;
+}
+
+apr_pool_t* AprEnv::getAprPool()
+{
+ return mpAprPool;
+}
+
+} // namespace apr_environment
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/AprEnv.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,50 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+
+#ifndef INCLUDED_APRENV_HXX
+#define INCLUDED_APRENV_HXX
+
+#include <apr/apr_pools.h>
+
+namespace apr_environment
+{
+
+// singleton class providing environment for APR libraries
+class AprEnv
+{
+ public:
+ ~AprEnv();
+
+ static AprEnv* getAprEnv();
+
+ apr_pool_t* getAprPool();
+
+ private:
+ apr_pool_t* mpAprPool;
+
+ AprEnv();
+
+};
+
+} // namespace apr_environment
+
+#endif // INCLUDED_APRENV_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,113 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <SerfCallbacks.hxx>
+
+#include <SerfSession.hxx>
+#include <SerfRequestProcessor.hxx>
+
+using namespace http_dav_ucp;
+
+extern "C" apr_status_t Serf_ConnectSetup( apr_socket_t *skt,
+ serf_bucket_t **read_bkt,
+ serf_bucket_t **write_bkt,
+ void *setup_baton,
+ apr_pool_t *pool )
+{
+ SerfSession* pSerfSession = static_cast< SerfSession* >( setup_baton );
+ return pSerfSession->setupSerfConnection( skt,
+ read_bkt,
+ write_bkt,
+ pool );
+}
+
+extern "C" apr_status_t Serf_Credentials( char **username,
+ char **password,
+ serf_request_t *request,
+ void *baton,
+ int code,
+ const char *authn_type,
+ const char *realm,
+ apr_pool_t *pool )
+{
+ SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( baton );
+ return pReqProc->provideSerfCredentials( username,
+ password,
+ request,
+ code,
+ authn_type,
+ realm,
+ pool );
+}
+
+extern "C" apr_status_t Serf_CertificationValidation( void *data,
+ int failures,
+ const serf_ssl_certificate_t *cert )
+{
+ SerfSession* pSerfSession = static_cast< SerfSession* >( data );
+ return pSerfSession->verifySerfCertificate( failures,
+ cert );
+}
+
+extern "C" apr_status_t Serf_SetupRequest( serf_request_t *request,
+ void *setup_baton,
+ serf_bucket_t **req_bkt,
+ serf_response_acceptor_t *acceptor,
+ void **acceptor_baton,
+ serf_response_handler_t *handler,
+ void **handler_baton,
+ apr_pool_t * pool )
+{
+ SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( setup_baton );
+ return pReqProc->setupSerfRequest( request,
+ req_bkt,
+ acceptor,
+ acceptor_baton,
+ handler,
+ handler_baton,
+ pool );
+}
+
+extern "C" serf_bucket_t* Serf_AcceptResponse( serf_request_t *request,
+ serf_bucket_t *stream,
+ void *acceptor_baton,
+ apr_pool_t *pool )
+{
+ SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( acceptor_baton );
+ return pReqProc->acceptSerfResponse( request,
+ stream,
+ pool );
+}
+
+extern "C" apr_status_t Serf_HandleResponse( serf_request_t *request,
+ serf_bucket_t *response,
+ void *handler_baton,
+ apr_pool_t *pool )
+{
+ SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( handler_baton );
+ return pReqProc->handleSerfResponse( request,
+ response,
+ pool );
+}
+
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCallbacks.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,66 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+
+#ifndef INCLUDED_CALLBACKS_HXX
+#define INCLUDED_CALLBACKS_HXX
+
+#include <serf.h>
+
+extern "C" apr_status_t Serf_ConnectSetup( apr_socket_t *skt,
+ serf_bucket_t **read_bkt,
+ serf_bucket_t **write_bkt,
+ void *setup_baton,
+ apr_pool_t *pool );
+
+extern "C" apr_status_t Serf_Credentials( char **username,
+ char **password,
+ serf_request_t *request,
+ void *baton,
+ int code,
+ const char *authn_type,
+ const char *realm,
+ apr_pool_t *pool );
+
+extern "C" apr_status_t Serf_CertificationValidation( void *data,
+ int failures,
+ const serf_ssl_certificate_t *cert );
+
+extern "C" apr_status_t Serf_SetupRequest( serf_request_t *request,
+ void *setup_baton,
+ serf_bucket_t **req_bkt,
+ serf_response_acceptor_t *acceptor,
+ void **acceptor_baton,
+ serf_response_handler_t *handler,
+ void **handler_baton,
+ apr_pool_t * pool );
+
+extern "C" serf_bucket_t* Serf_AcceptResponse( serf_request_t *request,
+ serf_bucket_t *stream,
+ void *acceptor_baton,
+ apr_pool_t *pool );
+
+extern "C" apr_status_t Serf_HandleResponse( serf_request_t *request,
+ serf_bucket_t *response,
+ void *handler_baton,
+ apr_pool_t *pool );
+
+#endif // INCLUDED_CALLBACKS_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,110 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <SerfCopyReqProcImpl.hxx>
+
+#include <serf.h>
+
+namespace http_dav_ucp
+{
+
+SerfCopyReqProcImpl::SerfCopyReqProcImpl( const char* inSourcePath,
+ const char* inDestinationPath,
+ const bool inOverwrite )
+ : SerfRequestProcessorImpl( inSourcePath )
+ , mDestPathStr( inDestinationPath )
+ , mbOverwrite( inOverwrite )
+{
+}
+
+SerfCopyReqProcImpl::~SerfCopyReqProcImpl()
+{
+}
+
+serf_bucket_t * SerfCopyReqProcImpl::createSerfRequestBucket( serf_request_t * inSerfRequest )
+{
+ serf_bucket_alloc_t* pSerfBucketAlloc = serf_request_get_alloc( inSerfRequest );
+
+ // create serf request
+ serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
+ "COPY",
+ getPathStr(),
+ 0,
+ serf_request_get_alloc( inSerfRequest ) );
+
+ // TODO - correct headers
+ // set request header fields
+ serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
+ serf_bucket_headers_setn( hdrs_bkt, "User-Agent", "www.openoffice.org/ucb/" );
+ serf_bucket_headers_setn( hdrs_bkt, "Accept-Encoding", "gzip");
+
+ // COPY specific header fields
+ serf_bucket_headers_setn( hdrs_bkt, "Destination", mDestPathStr );
+ if ( mbOverwrite )
+ {
+ serf_bucket_headers_setn( hdrs_bkt, "Overwrite", "T" );
+ }
+ else
+ {
+ serf_bucket_headers_setn( hdrs_bkt, "Overwrite", "F" );
+ }
+
+ return req_bkt;
+}
+
+
+bool SerfCopyReqProcImpl::processSerfResponseBucket( serf_request_t * /*inSerfRequest*/,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * /*inAprPool*/,
+ apr_status_t & outStatus )
+{
+ const char* data;
+ apr_size_t len;
+
+ while (1) {
+ outStatus = serf_bucket_read(inSerfResponseBucket, 8096, &data, &len);
+ if (SERF_BUCKET_READ_ERROR(outStatus))
+ {
+ return true;
+ }
+
+ /* are we done yet? */
+ if (APR_STATUS_IS_EOF(outStatus))
+ {
+ outStatus = APR_EOF;
+ return true;
+ }
+
+ /* have we drained the response so far? */
+ if ( APR_STATUS_IS_EAGAIN( outStatus ) )
+ {
+ return false;
+ }
+ }
+
+ /* NOTREACHED */
+ return true;
+}
+
+} // namespace http_dav_ucp
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfCopyReqProcImpl.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,55 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef INCLUDED_SERFCOPYREQPROCIMPL_HXX
+#define INCLUDED_SERFCOPYREQPROCIMPL_HXX
+
+#include <SerfRequestProcessorImpl.hxx>
+
+namespace http_dav_ucp
+{
+
+class SerfCopyReqProcImpl : public SerfRequestProcessorImpl
+{
+public:
+ SerfCopyReqProcImpl( const char* inSourcePath,
+ const char* inDestinationPath,
+ const bool inOverwrite );
+
+ virtual ~SerfCopyReqProcImpl();
+
+ virtual
+ serf_bucket_t * createSerfRequestBucket( serf_request_t * inSerfRequest );
+
+ virtual
+ bool processSerfResponseBucket( serf_request_t * inSerfRequest,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * inAprPool,
+ apr_status_t & outStatus );
+
+private:
+ const char* mDestPathStr;
+ const bool mbOverwrite;
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_SERFCOPYREQPROCIMPL_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,95 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <SerfDeleteReqProcImpl.hxx>
+
+#include <serf.h>
+
+namespace http_dav_ucp
+{
+
+SerfDeleteReqProcImpl::SerfDeleteReqProcImpl( const char* inPath )
+ : SerfRequestProcessorImpl( inPath )
+{
+}
+
+SerfDeleteReqProcImpl::~SerfDeleteReqProcImpl()
+{
+}
+
+serf_bucket_t * SerfDeleteReqProcImpl::createSerfRequestBucket( serf_request_t * inSerfRequest )
+{
+ serf_bucket_alloc_t* pSerfBucketAlloc = serf_request_get_alloc( inSerfRequest );
+
+ // create serf request
+ serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
+ "DELETE",
+ getPathStr(),
+ 0,
+ serf_request_get_alloc( inSerfRequest ) );
+
+ // TODO - correct headers
+ // set request header fields
+ serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
+ serf_bucket_headers_setn( hdrs_bkt, "User-Agent", "www.openoffice.org/ucb/" );
+ serf_bucket_headers_setn( hdrs_bkt, "Accept-Encoding", "gzip");
+
+ return req_bkt;
+}
+
+
+bool SerfDeleteReqProcImpl::processSerfResponseBucket( serf_request_t * /*inSerfRequest*/,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * /*inAprPool*/,
+ apr_status_t & outStatus )
+{
+ const char* data;
+ apr_size_t len;
+
+ while (1) {
+ outStatus = serf_bucket_read(inSerfResponseBucket, 8096, &data, &len);
+ if (SERF_BUCKET_READ_ERROR(outStatus))
+ {
+ return true;
+ }
+
+ /* are we done yet? */
+ if (APR_STATUS_IS_EOF(outStatus))
+ {
+ outStatus = APR_EOF;
+ return true;
+ }
+
+ /* have we drained the response so far? */
+ if ( APR_STATUS_IS_EAGAIN( outStatus ) )
+ {
+ return false;
+ }
+ }
+
+ /* NOTREACHED */
+ return true;
+}
+
+} // namespace http_dav_ucp
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfDeleteReqProcImpl.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,50 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef INCLUDED_SERFDELETEREQPROCIMPL_HXX
+#define INCLUDED_SERFDELETEREQPROCIMPL_HXX
+
+#include <SerfRequestProcessorImpl.hxx>
+
+namespace http_dav_ucp
+{
+
+class SerfDeleteReqProcImpl : public SerfRequestProcessorImpl
+{
+public:
+ SerfDeleteReqProcImpl( const char* inPath );
+
+ virtual ~SerfDeleteReqProcImpl();
+
+ virtual
+ serf_bucket_t * createSerfRequestBucket( serf_request_t * inSerfRequest );
+
+ virtual
+ bool processSerfResponseBucket( serf_request_t * inSerfRequest,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * inAprPool,
+ apr_status_t & outStatus );
+
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_SERFDELETEREQPROCIMPL_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,215 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <SerfGetReqProcImpl.hxx>
+
+using namespace com::sun::star;
+
+namespace http_dav_ucp
+{
+
+SerfGetReqProcImpl::SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< SerfInputStream > & xioInStrm )
+ : SerfRequestProcessorImpl( inPath )
+ , xInputStream( xioInStrm )
+ , xOutputStream()
+ , mpHeaderNames( 0 )
+ , mpResource( 0 )
+{
+}
+
+SerfGetReqProcImpl::SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< SerfInputStream > & xioInStrm,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource )
+ : SerfRequestProcessorImpl( inPath )
+ , xInputStream( xioInStrm )
+ , xOutputStream()
+ , mpHeaderNames( &inHeaderNames )
+ , mpResource( &ioResource )
+{
+}
+
+SerfGetReqProcImpl::SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< com::sun::star::io::XOutputStream > & xioOutStrm )
+ : SerfRequestProcessorImpl( inPath )
+ , xInputStream()
+ , xOutputStream( xioOutStrm )
+ , mpHeaderNames( 0 )
+ , mpResource( 0 )
+{
+}
+
+SerfGetReqProcImpl::SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< com::sun::star::io::XOutputStream > & xioOutStrm,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource )
+ : SerfRequestProcessorImpl( inPath )
+ , xInputStream()
+ , xOutputStream( xioOutStrm )
+ , mpHeaderNames( &inHeaderNames )
+ , mpResource( &ioResource )
+{
+}
+
+SerfGetReqProcImpl::~SerfGetReqProcImpl()
+{
+}
+
+serf_bucket_t * SerfGetReqProcImpl::createSerfRequestBucket( serf_request_t * inSerfRequest )
+{
+ serf_bucket_alloc_t* pSerfBucketAlloc = serf_request_get_alloc( inSerfRequest );
+
+ // create serf request
+ serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
+ "GET",
+ getPathStr(),
+ 0,
+ serf_request_get_alloc( inSerfRequest ) );
+
+ // TODO - correct headers
+ // set request header fields
+ serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
+ serf_bucket_headers_setn( hdrs_bkt, "User-Agent", "www.openoffice.org/ucb/" );
+ serf_bucket_headers_setn( hdrs_bkt, "Accept-Encoding", "gzip");
+
+ return req_bkt;
+}
+
+namespace
+{
+ apr_status_t Serf_ProcessResponseHeader( void* inUserData,
+ const char* inHeaderName,
+ const char* inHeaderValue )
+ {
+ SerfGetReqProcImpl* pReqProcImpl = static_cast< SerfGetReqProcImpl* >( inUserData );
+ pReqProcImpl->processSingleResponseHeader( inHeaderName,
+ inHeaderValue );
+
+ return APR_SUCCESS;
+ }
+} // end of anonymous namespace
+
+bool SerfGetReqProcImpl::processSerfResponseBucket( serf_request_t * /*inSerfRequest*/,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * /*inAprPool*/,
+ apr_status_t & outStatus )
+{
+ const char* data;
+ apr_size_t len;
+
+ while (1) {
+ outStatus = serf_bucket_read(inSerfResponseBucket, 8096, &data, &len);
+ if (SERF_BUCKET_READ_ERROR(outStatus))
+ {
+ return true;
+ }
+
+ if ( len > 0 )
+ {
+ if ( xInputStream.is() )
+ {
+ xInputStream->AddToStream( data, len );
+ }
+ else if ( xOutputStream.is() )
+ {
+ const uno::Sequence< sal_Int8 > aDataSeq( (sal_Int8 *)data, len );
+ xOutputStream->writeBytes( aDataSeq );
+ }
+ }
+
+ /* are we done yet? */
+ if (APR_STATUS_IS_EOF(outStatus))
+ {
+ // read response header, if requested
+ if ( mpHeaderNames != 0 && mpResource != 0 )
+ {
+ serf_bucket_t* SerfHeaderBucket = serf_bucket_response_get_headers( inSerfResponseBucket );
+ if ( SerfHeaderBucket != 0 )
+ {
+ serf_bucket_headers_do( SerfHeaderBucket,
+ Serf_ProcessResponseHeader,
+ this );
+ }
+ }
+
+ outStatus = APR_EOF;
+ return true;
+ }
+
+ /* have we drained the response so far? */
+ if ( APR_STATUS_IS_EAGAIN( outStatus ) )
+ {
+ return false;
+ }
+ }
+
+ /* NOTREACHED */
+ return true;
+}
+
+void SerfGetReqProcImpl::processSingleResponseHeader( const char* inHeaderName,
+ const char* inHeaderValue )
+{
+ rtl::OUString aHeaderName( rtl::OUString::createFromAscii( inHeaderName ) );
+
+ bool bStoreHeaderField = false;
+
+ if ( mpHeaderNames->size() == 0 )
+ {
+ // store all header fields
+ bStoreHeaderField = true;
+ }
+ else
+ {
+ // store only header fields which are requested
+ std::vector< ::rtl::OUString >::const_iterator it( mpHeaderNames->begin() );
+ const std::vector< ::rtl::OUString >::const_iterator end( mpHeaderNames->end() );
+
+ while ( it != end )
+ {
+ // header names are case insensitive
+ if ( (*it).equalsIgnoreAsciiCase( aHeaderName ) )
+ {
+ bStoreHeaderField = true;
+ break;
+ }
+ else
+ {
+ ++it;
+ }
+ }
+ }
+
+ if ( bStoreHeaderField )
+ {
+ DAVPropertyValue thePropertyValue;
+ thePropertyValue.IsCaseSensitive = false;
+ thePropertyValue.Name = aHeaderName;
+ thePropertyValue.Value <<= rtl::OUString::createFromAscii( inHeaderValue );
+ mpResource->properties.push_back( thePropertyValue );
+ }
+}
+
+} // namespace http_dav_ucp
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfGetReqProcImpl.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,78 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef INCLUDED_SERFGETREQPROCIMPL_HXX
+#define INCLUDED_SERFGETREQPROCIMPL_HXX
+
+#include <SerfRequestProcessorImpl.hxx>
+
+#include <vector>
+#include <rtl/ustring.hxx>
+#include <DAVResource.hxx>
+
+#include <SerfInputStream.hxx>
+#include <com/sun/star/io/XOutputStream.hpp>
+
+namespace http_dav_ucp
+{
+
+class SerfGetReqProcImpl : public SerfRequestProcessorImpl
+{
+public:
+ SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< SerfInputStream > & xioInStrm );
+
+ SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< SerfInputStream > & xioInStrm,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource );
+
+ SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< com::sun::star::io::XOutputStream > & xioOutStrm );
+
+ SerfGetReqProcImpl( const char* inPath,
+ const com::sun::star::uno::Reference< com::sun::star::io::XOutputStream > & xioOutStrm,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource );
+
+ virtual ~SerfGetReqProcImpl();
+
+ virtual
+ serf_bucket_t * createSerfRequestBucket( serf_request_t * inSerfRequest );
+
+ virtual
+ bool processSerfResponseBucket( serf_request_t * inSerfRequest,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * inAprPool,
+ apr_status_t & outStatus );
+
+ void processSingleResponseHeader( const char* inHeaderName,
+ const char* inHeaderValue );
+private:
+ com::sun::star::uno::Reference< SerfInputStream > xInputStream;
+ com::sun::star::uno::Reference< com::sun::star::io::XOutputStream > xOutputStream;
+ const std::vector< ::rtl::OUString > * mpHeaderNames;
+ DAVResource* mpResource;
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_SERFGETREQPROCIMPL_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,169 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <SerfHeadReqProcImpl.hxx>
+
+using namespace com::sun::star;
+
+namespace http_dav_ucp
+{
+
+SerfHeadReqProcImpl::SerfHeadReqProcImpl( const char* inPath,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource )
+ : SerfRequestProcessorImpl( inPath )
+ , mpHeaderNames( &inHeaderNames )
+ , mpResource( &ioResource )
+{
+}
+
+SerfHeadReqProcImpl::~SerfHeadReqProcImpl()
+{
+}
+
+serf_bucket_t * SerfHeadReqProcImpl::createSerfRequestBucket( serf_request_t * inSerfRequest )
+{
+ serf_bucket_alloc_t* pSerfBucketAlloc = serf_request_get_alloc( inSerfRequest );
+
+ // create serf request
+ serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
+ "HEAD",
+ getPathStr(),
+ 0,
+ serf_request_get_alloc( inSerfRequest ) );
+
+ // TODO - correct headers
+ // set request header fields
+ serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
+ serf_bucket_headers_setn( hdrs_bkt, "User-Agent", "www.openoffice.org/ucb/" );
+ serf_bucket_headers_setn( hdrs_bkt, "Accept-Encoding", "gzip");
+
+ return req_bkt;
+}
+
+namespace
+{
+ apr_status_t Serf_ProcessResponseHeader( void* inUserData,
+ const char* inHeaderName,
+ const char* inHeaderValue )
+ {
+ SerfHeadReqProcImpl* pReqProcImpl = static_cast< SerfHeadReqProcImpl* >( inUserData );
+ pReqProcImpl->processSingleResponseHeader( inHeaderName,
+ inHeaderValue );
+
+ return APR_SUCCESS;
+ }
+} // end of anonymous namespace
+
+bool SerfHeadReqProcImpl::processSerfResponseBucket( serf_request_t * /*inSerfRequest*/,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * /*inAprPool*/,
+ apr_status_t & outStatus )
+{
+ const char* data;
+ apr_size_t len;
+
+ serf_bucket_t* SerfHeaderBucket = serf_bucket_response_get_headers( inSerfResponseBucket );
+
+ while ( SerfHeaderBucket )
+ {
+ outStatus = serf_bucket_read(SerfHeaderBucket, 8096, &data, &len);
+ if (SERF_BUCKET_READ_ERROR(outStatus))
+ {
+ return true;
+ }
+
+ /* are we done yet? */
+ if (APR_STATUS_IS_EOF(outStatus))
+ {
+ // read response header, if requested
+ if ( mpHeaderNames != 0 && mpResource != 0 )
+ {
+ serf_bucket_t* SerfHeaderBucket = serf_bucket_response_get_headers( inSerfResponseBucket );
+ if ( SerfHeaderBucket != 0 )
+ {
+ serf_bucket_headers_do( SerfHeaderBucket,
+ Serf_ProcessResponseHeader,
+ this );
+ }
+ }
+
+ outStatus = APR_EOF;
+ return true;
+ }
+
+ /* have we drained the response so far? */
+ if ( APR_STATUS_IS_EAGAIN( outStatus ) )
+ {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+void SerfHeadReqProcImpl::processSingleResponseHeader( const char* inHeaderName,
+ const char* inHeaderValue )
+{
+ rtl::OUString aHeaderName( rtl::OUString::createFromAscii( inHeaderName ) );
+
+ bool bStoreHeaderField = false;
+
+ if ( mpHeaderNames->size() == 0 )
+ {
+ // store all header fields
+ bStoreHeaderField = true;
+ }
+ else
+ {
+ // store only header fields which are requested
+ std::vector< ::rtl::OUString >::const_iterator it( mpHeaderNames->begin() );
+ const std::vector< ::rtl::OUString >::const_iterator end( mpHeaderNames->end() );
+
+ while ( it != end )
+ {
+ // header names are case insensitive
+ if ( (*it).equalsIgnoreAsciiCase( aHeaderName ) )
+ {
+ bStoreHeaderField = true;
+ break;
+ }
+ else
+ {
+ ++it;
+ }
+ }
+ }
+
+ if ( bStoreHeaderField )
+ {
+ DAVPropertyValue thePropertyValue;
+ thePropertyValue.IsCaseSensitive = false;
+ thePropertyValue.Name = aHeaderName;
+ thePropertyValue.Value <<= rtl::OUString::createFromAscii( inHeaderValue );
+ mpResource->properties.push_back( thePropertyValue );
+ }
+}
+
+} // namespace http_dav_ucp
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfHeadReqProcImpl.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,64 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef INCLUDED_SERFHEADREQPROCIMPL_HXX
+#define INCLUDED_SERFHEADREQPROCIMPL_HXX
+
+#include <SerfRequestProcessorImpl.hxx>
+
+#include <vector>
+#include <rtl/ustring.hxx>
+#include <DAVResource.hxx>
+
+#include <SerfInputStream.hxx>
+#include <com/sun/star/io/XOutputStream.hpp>
+
+namespace http_dav_ucp
+{
+
+class SerfHeadReqProcImpl : public SerfRequestProcessorImpl
+{
+public:
+ SerfHeadReqProcImpl( const char* inPath,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource );
+
+ virtual ~SerfHeadReqProcImpl();
+
+ virtual
+ serf_bucket_t * createSerfRequestBucket( serf_request_t * inSerfRequest );
+
+ virtual
+ bool processSerfResponseBucket( serf_request_t * inSerfRequest,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * inAprPool,
+ apr_status_t & outStatus );
+
+ void processSingleResponseHeader( const char* inHeaderName,
+ const char* inHeaderValue );
+private:
+ const std::vector< ::rtl::OUString > * mpHeaderNames;
+ DAVResource* mpResource;
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_SERFHEADREQPROCIMPL_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,191 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+#include "SerfInputStream.hxx"
+#include <rtl/memory.h>
+
+using namespace cppu;
+using namespace rtl;
+using namespace com::sun::star::io;
+using namespace com::sun::star::uno;
+using namespace http_dav_ucp;
+
+
+// -------------------------------------------------------------------
+// Constructor
+// -------------------------------------------------------------------
+SerfInputStream::SerfInputStream( void )
+: mLen( 0 ),
+ mPos( 0 )
+{
+}
+
+// -------------------------------------------------------------------
+// Destructor
+// -------------------------------------------------------------------
+SerfInputStream::~SerfInputStream( void )
+{
+}
+
+// -------------------------------------------------------------------
+// AddToStream
+// Allows the caller to add some data to the "end" of the stream
+// -------------------------------------------------------------------
+void SerfInputStream::AddToStream( const char * inBuf, sal_Int32 inLen )
+{
+ mInputBuffer.realloc( sal::static_int_cast<sal_Int32>(mLen) + inLen );
+ rtl_copyMemory( mInputBuffer.getArray() + mLen, inBuf, inLen );
+ mLen += inLen;
+}
+
+// -------------------------------------------------------------------
+// queryInterface
+// -------------------------------------------------------------------
+Any SerfInputStream::queryInterface( const Type &type )
+ throw( RuntimeException )
+{
+ Any aRet = ::cppu::queryInterface( type,
+ static_cast< XInputStream * >( this ),
+ static_cast< XSeekable * >( this ) );
+ return aRet.hasValue() ? aRet : OWeakObject::queryInterface( type );
+}
+
+// -------------------------------------------------------------------
+// readBytes
+// "Reads" the specified number of bytes from the stream
+// -------------------------------------------------------------------
+sal_Int32 SAL_CALL SerfInputStream::readBytes(
+ ::com::sun::star::uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::BufferSizeExceededException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+ // Work out how much we're actually going to write
+ sal_Int32 theBytes2Read = nBytesToRead;
+ sal_Int32 theBytesLeft = sal::static_int_cast<sal_Int32>(mLen - mPos);
+ if ( theBytes2Read > theBytesLeft )
+ theBytes2Read = theBytesLeft;
+
+ // Realloc buffer.
+ aData.realloc( theBytes2Read );
+
+ // Write the data
+ rtl_copyMemory(
+ aData.getArray(), mInputBuffer.getConstArray() + mPos, theBytes2Read );
+
+ // Update our stream position for next time
+ mPos += theBytes2Read;
+
+ return theBytes2Read;
+}
+
+// -------------------------------------------------------------------
+// readSomeBytes
+// -------------------------------------------------------------------
+sal_Int32 SAL_CALL SerfInputStream::readSomeBytes(
+ ::com::sun::star::uno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::BufferSizeExceededException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+ // Warning: What should this be doing ?
+ return readBytes( aData, nMaxBytesToRead );
+}
+
+// -------------------------------------------------------------------
+// skipBytes
+// Moves the current stream position forward
+// -------------------------------------------------------------------
+void SAL_CALL SerfInputStream::skipBytes( sal_Int32 nBytesToSkip )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::BufferSizeExceededException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+ mPos += nBytesToSkip;
+ if ( mPos >= mLen )
+ mPos = mLen;
+}
+
+// -------------------------------------------------------------------
+// available
+// Returns the number of unread bytes currently remaining on the stream
+// -------------------------------------------------------------------
+sal_Int32 SAL_CALL SerfInputStream::available( )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+ return sal::static_int_cast<sal_Int32>(mLen - mPos);
+}
+
+// -------------------------------------------------------------------
+// closeInput
+// -------------------------------------------------------------------
+void SAL_CALL SerfInputStream::closeInput( void )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+}
+
+// -------------------------------------------------------------------
+// seek
+// -------------------------------------------------------------------
+void SAL_CALL SerfInputStream::seek( sal_Int64 location )
+ throw( ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+ if ( location < 0 )
+ throw ::com::sun::star::lang::IllegalArgumentException();
+
+ if ( location <= mLen )
+ mPos = location;
+ else
+ throw ::com::sun::star::lang::IllegalArgumentException();
+}
+
+// -------------------------------------------------------------------
+// getPosition
+// -------------------------------------------------------------------
+sal_Int64 SAL_CALL SerfInputStream::getPosition()
+ throw( ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+ return mPos;
+}
+
+// -------------------------------------------------------------------
+// getLength
+// -------------------------------------------------------------------
+sal_Int64 SAL_CALL SerfInputStream::getLength()
+ throw( ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException )
+{
+ return mLen;
+}
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfInputStream.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,121 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+
+#ifndef INCLUDED_NEONINPUTSTREAM_HXX
+#define INCLUDED_NEONINPUTSTREAM_HXX
+
+#include <sal/types.h>
+#include <rtl/ustring.hxx>
+#include <cppuhelper/weak.hxx>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XSeekable.hpp>
+
+
+namespace http_dav_ucp
+{
+
+// -------------------------------------------------------------------
+// SerfInputStream
+// A simple XInputStream implementation provided specifically for use
+// by the DAVSession::GET method.
+// -------------------------------------------------------------------
+class SerfInputStream : public ::com::sun::star::io::XInputStream,
+ public ::com::sun::star::io::XSeekable,
+ public ::cppu::OWeakObject
+{
+ private:
+ com::sun::star::uno::Sequence< sal_Int8 > mInputBuffer;
+ sal_Int64 mLen;
+ sal_Int64 mPos;
+
+ public:
+ SerfInputStream( void );
+ virtual ~SerfInputStream();
+
+ // Add some data to the end of the stream
+ void AddToStream( const char * inBuf, sal_Int32 inLen );
+
+ // XInterface
+ virtual com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & type )
+ throw( ::com::sun::star::uno::RuntimeException );
+
+ virtual void SAL_CALL acquire( void )
+ throw ()
+ { OWeakObject::acquire(); }
+
+ virtual void SAL_CALL release( void )
+ throw()
+ { OWeakObject::release(); }
+
+
+ // XInputStream
+ virtual sal_Int32 SAL_CALL readBytes(
+ ::com::sun::star::uno::Sequence< sal_Int8 > & aData,
+ sal_Int32 nBytesToRead )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::BufferSizeExceededException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+
+ virtual sal_Int32 SAL_CALL readSomeBytes(
+ ::com::sun::star::uno::Sequence< sal_Int8 > & aData,
+ sal_Int32 nMaxBytesToRead )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::BufferSizeExceededException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+
+ virtual void SAL_CALL skipBytes( sal_Int32 nBytesToSkip )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::BufferSizeExceededException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+
+ virtual sal_Int32 SAL_CALL available( void )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+
+ virtual void SAL_CALL closeInput( void )
+ throw( ::com::sun::star::io::NotConnectedException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // XSeekable
+ virtual void SAL_CALL seek( sal_Int64 location )
+ throw( ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+
+ virtual sal_Int64 SAL_CALL getPosition()
+ throw( ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+
+ virtual sal_Int64 SAL_CALL getLength()
+ throw( ::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException );
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_NEONINPUTSTREAM_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,241 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <ne_locks.h>
+#include <ne_uri.h>
+#include "rtl/ustring.hxx"
+#include "osl/time.h"
+#include "osl/thread.hxx"
+#include "SerfSession.hxx"
+#include "SerfLockStore.hxx"
+
+using namespace http_dav_ucp;
+
+namespace http_dav_ucp {
+
+class TickerThread : public osl::Thread
+{
+ bool m_bFinish;
+ SerfLockStore & m_rLockStore;
+
+public:
+
+ TickerThread( SerfLockStore & rLockStore )
+ : osl::Thread(), m_bFinish( false ), m_rLockStore( rLockStore ) {}
+
+ void finish() { m_bFinish = true; }
+
+protected:
+
+ virtual void SAL_CALL run();
+};
+
+} // namespace http_dav_ucp
+
+// -------------------------------------------------------------------
+void TickerThread::run()
+{
+ OSL_TRACE( "TickerThread: start." );
+
+ // we have to go through the loop more often to be able to finish ~quickly
+ const int nNth = 25;
+
+ int nCount = nNth;
+ while ( !m_bFinish )
+ {
+ if ( nCount-- <= 0 )
+ {
+ m_rLockStore.refreshLocks();
+ nCount = nNth;
+ }
+
+ TimeValue aTV;
+ aTV.Seconds = 0;
+ aTV.Nanosec = 1000000000 / nNth;
+ wait( aTV );
+ }
+
+ OSL_TRACE( "TickerThread: stop." );
+}
+
+// -------------------------------------------------------------------
+SerfLockStore::SerfLockStore()
+ : m_pSerfLockStore( ne_lockstore_create() ),
+ m_pTickerThread( 0 )
+{
+ OSL_ENSURE( m_pSerfLockStore, "Unable to create neon lock store!" );
+}
+
+// -------------------------------------------------------------------
+SerfLockStore::~SerfLockStore()
+{
+ stopTicker();
+
+ // release active locks, if any.
+ OSL_ENSURE( m_aLockInfoMap.size() == 0,
+ "SerfLockStore::~SerfLockStore - Releasing active locks!" );
+
+ LockInfoMap::const_iterator it( m_aLockInfoMap.begin() );
+ const LockInfoMap::const_iterator end( m_aLockInfoMap.end() );
+ while ( it != end )
+ {
+ SerfLock * pLock = (*it).first;
+ (*it).second.xSession->UNLOCK( pLock );
+
+ ne_lockstore_remove( m_pSerfLockStore, pLock );
+ ne_lock_destroy( pLock );
+
+ ++it;
+ }
+
+ ne_lockstore_destroy( m_pSerfLockStore );
+}
+
+// -------------------------------------------------------------------
+void SerfLockStore::startTicker()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ if ( !m_pTickerThread )
+ {
+ m_pTickerThread = new TickerThread( *this );
+ m_pTickerThread->create();
+ }
+}
+
+// -------------------------------------------------------------------
+void SerfLockStore::stopTicker()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ if ( m_pTickerThread )
+ {
+ m_pTickerThread->finish();
+ m_pTickerThread->join();
+ delete m_pTickerThread;
+ m_pTickerThread = 0;
+ }
+}
+
+// -------------------------------------------------------------------
+void SerfLockStore::registerSession( HttpSession * pHttpSession )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ ne_lockstore_register( m_pSerfLockStore, pHttpSession );
+}
+
+// -------------------------------------------------------------------
+SerfLock * SerfLockStore::findByUri( rtl::OUString const & rUri )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ ne_uri aUri;
+ ne_uri_parse( rtl::OUStringToOString(
+ rUri, RTL_TEXTENCODING_UTF8 ).getStr(), &aUri );
+ return ne_lockstore_findbyuri( m_pSerfLockStore, &aUri );
+}
+
+// -------------------------------------------------------------------
+void SerfLockStore::addLock( SerfLock * pLock,
+ rtl::Reference< SerfSession > const & xSession,
+ sal_Int32 nLastChanceToSendRefreshRequest )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ ne_lockstore_add( m_pSerfLockStore, pLock );
+ m_aLockInfoMap[ pLock ]
+ = LockInfo( xSession, nLastChanceToSendRefreshRequest );
+
+ startTicker();
+}
+
+// -------------------------------------------------------------------
+void SerfLockStore::updateLock( SerfLock * pLock,
+ sal_Int32 nLastChanceToSendRefreshRequest )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ LockInfoMap::iterator it( m_aLockInfoMap.find( pLock ) );
+ OSL_ENSURE( it != m_aLockInfoMap.end(),
+ "SerfLockStore::updateLock: lock not found!" );
+
+ if ( it != m_aLockInfoMap.end() )
+ {
+ (*it).second.nLastChanceToSendRefreshRequest
+ = nLastChanceToSendRefreshRequest;
+ }
+}
+
+// -------------------------------------------------------------------
+void SerfLockStore::removeLock( SerfLock * pLock )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ m_aLockInfoMap.erase( pLock );
+ ne_lockstore_remove( m_pSerfLockStore, pLock );
+
+ if ( m_aLockInfoMap.size() == 0 )
+ stopTicker();
+}
+
+// -------------------------------------------------------------------
+void SerfLockStore::refreshLocks()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ LockInfoMap::iterator it( m_aLockInfoMap.begin() );
+ const LockInfoMap::const_iterator end( m_aLockInfoMap.end() );
+ while ( it != end )
+ {
+ LockInfo & rInfo = (*it).second;
+ if ( rInfo.nLastChanceToSendRefreshRequest != -1 )
+ {
+ // 30 seconds or less remaining until lock expires?
+ TimeValue t1;
+ osl_getSystemTime( &t1 );
+ if ( rInfo.nLastChanceToSendRefreshRequest - 30
+ <= sal_Int32( t1.Seconds ) )
+ {
+ // refresh the lock.
+ sal_Int32 nlastChanceToSendRefreshRequest = -1;
+ if ( rInfo.xSession->LOCK(
+ (*it).first,
+ /* out param */ nlastChanceToSendRefreshRequest ) )
+ {
+ rInfo.nLastChanceToSendRefreshRequest
+ = nlastChanceToSendRefreshRequest;
+ }
+ else
+ {
+ // refresh failed. stop auto-refresh.
+ rInfo.nLastChanceToSendRefreshRequest = -1;
+ }
+ }
+ }
+ ++it;
+ }
+}
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfLockStore.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,97 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+
+#ifndef INCLUDED_SERFLOCKSTORE_HXX
+#define INCLUDED_SERFLOCKSTORE_HXX
+
+#include <map>
+#include "osl/mutex.hxx"
+#include "rtl/ref.hxx"
+#include "SerfTypes.hxx"
+
+namespace http_dav_ucp
+{
+
+class TickerThread;
+class SerfSession;
+
+struct ltptr
+{
+ bool operator()( const SerfLock * p1, const SerfLock * p2 ) const
+ {
+ return p1 < p2;
+ }
+};
+
+typedef struct _LockInfo
+{
+ rtl::Reference< SerfSession > xSession;
+ sal_Int32 nLastChanceToSendRefreshRequest;
+
+ _LockInfo()
+ : nLastChanceToSendRefreshRequest( -1 ) {}
+
+ _LockInfo( rtl::Reference< SerfSession > const & _xSession,
+ sal_Int32 _nLastChanceToSendRefreshRequest )
+ : xSession( _xSession ),
+ nLastChanceToSendRefreshRequest( _nLastChanceToSendRefreshRequest ) {}
+
+} LockInfo;
+
+typedef std::map< SerfLock *, LockInfo, ltptr > LockInfoMap;
+
+class SerfLockStore
+{
+ osl::Mutex m_aMutex;
+// ne_lock_store * m_pSerfLockStore;
+ TickerThread * m_pTickerThread;
+ LockInfoMap m_aLockInfoMap;
+
+public:
+ SerfLockStore();
+ ~SerfLockStore();
+
+ void registerSession( HttpSession * pHttpSession );
+
+ SerfLock * findByUri( rtl::OUString const & rUri );
+
+ void addLock( SerfLock * pLock,
+ rtl::Reference< SerfSession > const & xSession,
+ // time in seconds since Jan 1 1970
+ // -1: infinite lock, no refresh
+ sal_Int32 nLastChanceToSendRefreshRequest );
+
+ void updateLock( SerfLock * pLock,
+ sal_Int32 nLastChanceToSendRefreshRequest );
+
+ void removeLock( SerfLock * pLock );
+
+ void refreshLocks();
+
+private:
+ void startTicker();
+ void stopTicker();
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_SERFLOCKSTORE_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,95 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <SerfMkColReqProcImpl.hxx>
+
+#include <serf.h>
+
+namespace http_dav_ucp
+{
+
+SerfMkColReqProcImpl::SerfMkColReqProcImpl( const char* inPath )
+ : SerfRequestProcessorImpl( inPath )
+{
+}
+
+SerfMkColReqProcImpl::~SerfMkColReqProcImpl()
+{
+}
+
+serf_bucket_t * SerfMkColReqProcImpl::createSerfRequestBucket( serf_request_t * inSerfRequest )
+{
+ serf_bucket_alloc_t* pSerfBucketAlloc = serf_request_get_alloc( inSerfRequest );
+
+ // create serf request
+ serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
+ "MKCOL",
+ getPathStr(),
+ 0,
+ serf_request_get_alloc( inSerfRequest ) );
+
+ // TODO - correct headers
+ // set request header fields
+ serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
+ serf_bucket_headers_setn( hdrs_bkt, "User-Agent", "www.openoffice.org/ucb/" );
+ serf_bucket_headers_setn( hdrs_bkt, "Accept-Encoding", "gzip");
+
+ return req_bkt;
+}
+
+
+bool SerfMkColReqProcImpl::processSerfResponseBucket( serf_request_t * /*inSerfRequest*/,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * /*inAprPool*/,
+ apr_status_t & outStatus )
+{
+ const char* data;
+ apr_size_t len;
+
+ while (1) {
+ outStatus = serf_bucket_read(inSerfResponseBucket, 8096, &data, &len);
+ if (SERF_BUCKET_READ_ERROR(outStatus))
+ {
+ return true;
+ }
+
+ /* are we done yet? */
+ if (APR_STATUS_IS_EOF(outStatus))
+ {
+ outStatus = APR_EOF;
+ return true;
+ }
+
+ /* have we drained the response so far? */
+ if ( APR_STATUS_IS_EAGAIN( outStatus ) )
+ {
+ return false;
+ }
+ }
+
+ /* NOTREACHED */
+ return true;
+}
+
+} // namespace http_dav_ucp
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMkColReqProcImpl.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,50 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef INCLUDED_SERFMKCOLREQPROCIMPL_HXX
+#define INCLUDED_SERFMKCOLREQPROCIMPL_HXX
+
+#include <SerfRequestProcessorImpl.hxx>
+
+namespace http_dav_ucp
+{
+
+class SerfMkColReqProcImpl : public SerfRequestProcessorImpl
+{
+public:
+ SerfMkColReqProcImpl( const char* inPath );
+
+ virtual ~SerfMkColReqProcImpl();
+
+ virtual
+ serf_bucket_t * createSerfRequestBucket( serf_request_t * inSerfRequest );
+
+ virtual
+ bool processSerfResponseBucket( serf_request_t * inSerfRequest,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * inAprPool,
+ apr_status_t & outStatus );
+
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_SERFMKCOLREQPROCIMPL_HXX
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.cxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.cxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.cxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,110 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <SerfMoveReqProcImpl.hxx>
+
+#include <serf.h>
+
+namespace http_dav_ucp
+{
+
+SerfMoveReqProcImpl::SerfMoveReqProcImpl( const char* inSourcePath,
+ const char* inDestinationPath,
+ const bool inOverwrite )
+ : SerfRequestProcessorImpl( inSourcePath )
+ , mDestPathStr( inDestinationPath )
+ , mbOverwrite( inOverwrite )
+{
+}
+
+SerfMoveReqProcImpl::~SerfMoveReqProcImpl()
+{
+}
+
+serf_bucket_t * SerfMoveReqProcImpl::createSerfRequestBucket( serf_request_t * inSerfRequest )
+{
+ serf_bucket_alloc_t* pSerfBucketAlloc = serf_request_get_alloc( inSerfRequest );
+
+ // create serf request
+ serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
+ "MOVE",
+ getPathStr(),
+ 0,
+ serf_request_get_alloc( inSerfRequest ) );
+
+ // TODO - correct headers
+ // set request header fields
+ serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
+ serf_bucket_headers_setn( hdrs_bkt, "User-Agent", "www.openoffice.org/ucb/" );
+ serf_bucket_headers_setn( hdrs_bkt, "Accept-Encoding", "gzip");
+
+ // MOVE specific header fields
+ serf_bucket_headers_setn( hdrs_bkt, "Destination", mDestPathStr );
+ if ( mbOverwrite )
+ {
+ serf_bucket_headers_setn( hdrs_bkt, "Overwrite", "T" );
+ }
+ else
+ {
+ serf_bucket_headers_setn( hdrs_bkt, "Overwrite", "F" );
+ }
+
+ return req_bkt;
+}
+
+
+bool SerfMoveReqProcImpl::processSerfResponseBucket( serf_request_t * /*inSerfRequest*/,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * /*inAprPool*/,
+ apr_status_t & outStatus )
+{
+ const char* data;
+ apr_size_t len;
+
+ while (1) {
+ outStatus = serf_bucket_read(inSerfResponseBucket, 8096, &data, &len);
+ if (SERF_BUCKET_READ_ERROR(outStatus))
+ {
+ return true;
+ }
+
+ /* are we done yet? */
+ if (APR_STATUS_IS_EOF(outStatus))
+ {
+ outStatus = APR_EOF;
+ return true;
+ }
+
+ /* have we drained the response so far? */
+ if ( APR_STATUS_IS_EAGAIN( outStatus ) )
+ {
+ return false;
+ }
+ }
+
+ /* NOTREACHED */
+ return true;
+}
+
+} // namespace http_dav_ucp
Added: incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.hxx?rev=1292832&view=auto
==============================================================================
--- incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.hxx (added)
+++ incubator/ooo/trunk/main/ucb/source/ucp/webdav/SerfMoveReqProcImpl.hxx Thu Feb 23 15:52:46 2012
@@ -0,0 +1,55 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef INCLUDED_SERFMOVEREQPROCIMPL_HXX
+#define INCLUDED_SERFMOVEREQPROCIMPL_HXX
+
+#include <SerfRequestProcessorImpl.hxx>
+
+namespace http_dav_ucp
+{
+
+class SerfMoveReqProcImpl : public SerfRequestProcessorImpl
+{
+public:
+ SerfMoveReqProcImpl( const char* inSourcePath,
+ const char* inDestinationPath,
+ const bool inOverwrite );
+
+ virtual ~SerfMoveReqProcImpl();
+
+ virtual
+ serf_bucket_t * createSerfRequestBucket( serf_request_t * inSerfRequest );
+
+ virtual
+ bool processSerfResponseBucket( serf_request_t * inSerfRequest,
+ serf_bucket_t * inSerfResponseBucket,
+ apr_pool_t * inAprPool,
+ apr_status_t & outStatus );
+
+private:
+ const char* mDestPathStr;
+ const bool mbOverwrite;
+};
+
+} // namespace http_dav_ucp
+
+#endif // INCLUDED_SERFMOVEREQPROCIMPL_HXX