22 #include <com/sun/star/ucb/InteractiveIOException.hpp>
24 #include <com/sun/star/task/XInteractionAbort.hpp>
26 #include <com/sun/star/task/XInteractionApprove.hpp>
28 #include <com/sun/star/ucb/UnsupportedDataSinkException.hpp>
30 #include <com/sun/star/ucb/AuthenticationRequest.hpp>
32 #include <com/sun/star/ucb/CertificateValidationRequest.hpp>
36 StillReadWriteInteraction::StillReadWriteInteraction(
const css::uno::Reference< css::task::XInteractionHandler >& xHandler,
37 const css::uno::Reference< css::task::XInteractionHandler >& xAuxiliaryHandler)
39 , m_bHandledByMySelf (
false)
40 , m_xAuxiliaryHandler(xAuxiliaryHandler)
42 std::vector< ::ucbhelper::InterceptedInteraction::InterceptedRequest > lInterceptions;
43 lInterceptions.reserve(4);
47 aInterceptedRequest.
Request <<= css::ucb::InteractiveIOException();
49 lInterceptions.push_back(aInterceptedRequest);
52 aInterceptedRequest.
Request <<= css::ucb::UnsupportedDataSinkException();
54 lInterceptions.push_back(aInterceptedRequest);
56 aInterceptedRequest.
Handle = HANDLE_AUTHENTICATIONREQUESTEXCEPTION;
57 aInterceptedRequest.
Request <<= css::ucb::AuthenticationRequest();
59 lInterceptions.push_back(aInterceptedRequest);
61 aInterceptedRequest.
Handle = HANDLE_CERTIFICATEVALIDATIONREQUESTEXCEPTION;
62 aInterceptedRequest.
Request <<= css::ucb::CertificateValidationRequest();
64 lInterceptions.push_back(aInterceptedRequest);
66 setInterceptedHandler(xHandler);
67 setInterceptions(std::move(lInterceptions));
70 void StillReadWriteInteraction::resetInterceptions()
72 setInterceptions(std::vector< ::ucbhelper::InterceptedInteraction::InterceptedRequest >());
75 void StillReadWriteInteraction::resetErrorStates()
78 m_bHandledByMySelf =
false;
83 const css::uno::Reference< css::task::XInteractionRequest >& xRequest)
90 switch(aRequest.Handle)
94 css::ucb::InteractiveIOException exIO;
95 xRequest->getRequest() >>= exIO;
97 (exIO.Code == css::ucb::IOErrorCode_ACCESS_DENIED )
98 || (exIO.Code == css::ucb::IOErrorCode_LOCKING_VIOLATION )
99 || (exIO.Code == css::ucb::IOErrorCode_NOT_EXISTING )
103 || (exIO.Code == css::ucb::IOErrorCode_NOT_SUPPORTED )
107 || (exIO.Code == css::ucb::IOErrorCode_GENERAL )
118 case HANDLE_CERTIFICATEVALIDATIONREQUESTEXCEPTION:
119 case HANDLE_AUTHENTICATIONREQUESTEXCEPTION:
122 if (m_xAuxiliaryHandler.is())
124 m_xAuxiliaryHandler->handle(xRequest);
125 return ::ucbhelper::InterceptedInteraction::E_INTERCEPTED;
136 m_bHandledByMySelf =
true;
138 xRequest->getContinuations(),
141 return ::ucbhelper::InterceptedInteraction::E_NO_CONTINUATION_FOUND;
143 return ::ucbhelper::InterceptedInteraction::E_INTERCEPTED;
147 if (m_xInterceptedHandler.is())
149 m_xInterceptedHandler->handle(xRequest);
151 return ::ucbhelper::InterceptedInteraction::E_INTERCEPTED;
const sal_Int32 HANDLE_UNSUPPORTEDDATASINKEXCEPTION
Will handle com::sun::star::ucb::UnsupportedDataSinkException.
static css::uno::Reference< css::task::XInteractionContinuation > extractContinuation(const css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > &lContinuations, const css::uno::Type &aType)
const sal_Int32 HANDLE_INTERACTIVEIOEXCEPTION
Will handle com::sun::star::ucb::InteractiveIOException and derived classes.
css::uno::Type const & get()
css::uno::Type Continuation
bool m_bDetectedRangeSegmentation false