| /************************************************************** |
| * |
| * 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 __com_sun_star_ucb_XCommandProcessor_idl__ |
| #define __com_sun_star_ucb_XCommandProcessor_idl__ |
| |
| #ifndef __com_sun_star_uno_XInterface_idl__ |
| #include <com/sun/star/uno/XInterface.idl> |
| #endif |
| |
| #ifndef __com_sun_star_ucb_XCommandEnvironment_idl__ |
| #include <com/sun/star/ucb/XCommandEnvironment.idl> |
| #endif |
| |
| #ifndef __com_sun_star_ucb_Command_idl__ |
| #include <com/sun/star/ucb/Command.idl> |
| #endif |
| |
| #ifndef __com_sun_star_ucb_CommandAbortedException_idl__ |
| #include <com/sun/star/ucb/CommandAbortedException.idl> |
| #endif |
| |
| //============================================================================= |
| |
| module com { module sun { module star { module ucb { |
| |
| //============================================================================= |
| /** defines a processor for synchronous commands, which are executed in a |
| specific execution environment. |
| |
| @version 1.0 |
| @author Kai Sommerfeld |
| |
| @see com::sun::star::ucb::XCommandProcessor2 |
| for the improved version of this interface. |
| |
| @see Command |
| @see XCommandEnvironment |
| @see XContent |
| */ |
| published interface XCommandProcessor : com::sun::star::uno::XInterface |
| { |
| //------------------------------------------------------------------------- |
| /** creates a unique identifier for a command. |
| |
| <p>This identifier can be used to abort the execution of the command |
| accociated with that identifier. Note that it is generally not |
| necessary to obtain a new id for each command, because commands are |
| executed synchronously. So the id for a command is valid again after a |
| command previously associated with this id has finished. In fact you |
| only should get one identifier per thread and assign it to every |
| command executed by that thread.</p> |
| |
| <p>Also, after a call to <member>XCommandProcessor::abort</member>, an |
| identifier should not be used any longer (and instead be released by a |
| call to <member>XCommandProcessor2::releaseCommandIdentifier</member>), |
| because it may well abort <em>all</em> further calls to |
| <member>XCommandProcessor::execute</member>.</p> |
| |
| <p>To avoid ever-increasing resource consumption, the identifier |
| should be released via |
| <member>XCommandProcessor2::releaseCommandIdentifier</member> |
| when it is no longer used.</p> |
| |
| @returns |
| a command identifier. |
| */ |
| long createCommandIdentifier(); |
| |
| //------------------------------------------------------------------------- |
| /** executes a command. |
| |
| <p>Common command definitions can be found in the soecification of the |
| service <type>Content</type>. |
| |
| @param aCommand |
| is the command to execute. |
| |
| @param CommandId |
| is a unique id for the command. This identifier was obtained by calling |
| <member>XCommandProcessor::createCommandIdentifier</member>. A value of |
| zero can be used, if the command never shall be aborted. Different |
| threads MUST NOT share one command identifier (except <code>0</code>). |
| This can easily achieved, if every thread that wants to use an |
| <type>XCommandProcessor</type>, obtains exactly one identifier |
| using <member>XCommandProcessor::createCommandIdentifier</member>. |
| This identifier can be used for every call to |
| <member>XCommandProcessor::execute</member> done by that thread. |
| |
| @param Environment |
| is the execution environment. |
| |
| @returns |
| the result according to the specification of the command. |
| |
| @throws CommandAbortedException |
| to indicate that the command was aborted. |
| |
| @throws DuplicateCommandIdentifierException |
| to indicate that two threads tried to use the same command identifier |
| |
| @throws Exception |
| if an error occured during the execution of the command. |
| */ |
| any execute( [in] Command aCommand, |
| [in] long CommandId, |
| [in] XCommandEnvironment Environment ) |
| raises ( com::sun::star::uno::Exception, CommandAbortedException ); |
| |
| //------------------------------------------------------------------------- |
| /** ends the command associated with the given id. |
| |
| <p>Not every command can be aborted. It's up to the implementation |
| to decide whether this method will actually end the processing of |
| the command or simply do nothing. |
| |
| @param CommandId |
| is a unique id for the command to abort. This must be the identifier |
| passed to <member>XCommandProcessor::execute</member> for the command |
| to abort. |
| */ |
| [oneway] void abort( [in] long CommandId ); |
| }; |
| |
| //============================================================================= |
| |
| }; }; }; }; |
| |
| #endif |