| /************************************************************** |
| * |
| * 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_BRIDGE_XPROTOCOLPROPERTIES_IDL_ |
| #define _COM_SUN_STAR_BRIDGE_XPROTOCOLPROPERTIES_IDL_ |
| #include <com/sun/star/bridge/ProtocolProperty.idl> |
| #include <com/sun/star/bridge/InvalidProtocolChangeException.idl> |
| |
| module com { module sun { module star { module bridge { |
| |
| |
| /** Bridge internal interface, that allows to change protocol settings of the remote |
| counter part. |
| |
| <p>In general, this interface is implemented by the bridge itself. It must not |
| be called from outside the bridge.</p> |
| |
| <p>INTERNAL INTERFACE, DO NOT USE IT ELSEWHERE!</p> |
| */ |
| published interface XProtocolProperties : com::sun::star::uno::XInterface |
| { |
| /** called to get a list of bridge internal properties. Which properties can be retrieved, |
| is protocol dependent. |
| |
| <p> The properties MUST NOT change between a requestChange and a commit change call.</p> |
| */ |
| sequence< ProtocolProperty > getProperties( ); |
| |
| /** called to initiate a protocol change. |
| |
| <p>This method should always be called in the scope of the local bridge setting object, |
| because the remote counter part may do such a call at the same time |
| (typically at startup time). </p> |
| |
| @param nRandomNumber |
| In case both processes call requestChange at the same time, |
| the caller with the higher nRandomNumber is allowed to call |
| commitChange. |
| |
| @returns |
| 1, if the caller may ( and MUST !!!) call commitChange. |
| 0, if the caller is not allowed to call commitChange. This can only happen, |
| if the other bridge has called requestChange at the same time and |
| nRandomNumber is smaller than the other bridge's nRandomNumber. |
| The remote counterpart is supposed to call commitChange within a small |
| time span. Please call requestChange() after the remote counterpart has |
| called commitChange(). |
| -1 if the nRandomNumber is of the same value as the previously |
| sent requestChange (sent by the remote counterpart). This is a draw :o). |
| Generate a new random number and try again. |
| */ |
| long requestChange( [in] long nRandomNumber ); |
| |
| /** called to commit a protocol change. |
| |
| <p>It is only allowed to call commitChange, if requestChange |
| has been called previously and the return value was true. The new properties are |
| valid after the reply of commitChange has been received. |
| Note, that this is difficult for the callee, because it must marshal the reply |
| with the old settings. </p> |
| |
| <p>All properties not mentioned in the list are unchanged. |
| Note that the bridge must be blocked for other threads, |
| before commitChange is sent and unblocked |
| after the reply has been received. This blocks the bridge.</p> |
| |
| @throws InvalidProtocolChangeException |
| when the remote counterpart could not change at least one of the properties. |
| No property has been changed. requestChange must be called |
| again to initiate a new change of the protocol. |
| */ |
| void commitChange( [in] sequence< ProtocolProperty > newValues ) |
| raises ( com::sun::star::bridge::InvalidProtocolChangeException ); |
| }; |
| |
| };};};}; |
| #endif |