| /* |
| * 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. |
| */ |
| |
| using System; |
| using System.Threading.Tasks; |
| using Apache.NMS.AMQP.Message; |
| using Apache.NMS.AMQP.Meta; |
| |
| namespace Apache.NMS.AMQP.Provider |
| { |
| public interface IProviderListener |
| { |
| void OnInboundMessage(InboundMessageDispatch envelope); |
| |
| void OnConnectionFailure(NMSException exception); |
| |
| Task OnConnectionRecovery(IProvider provider); |
| |
| /// <summary> |
| /// Called to indicate that the underlying connection to the Broker has been established |
| /// for the first time. For a fault tolerant provider this event should only ever be |
| /// triggered once with the interruption and recovery events following on for future |
| /// </summary> |
| /// <param name="remoteUri">The Uri of the Broker that the client has now connected to.</param> |
| void OnConnectionEstablished(Uri remoteUri); |
| |
| /// <summary> |
| /// Called to indicate that a connection to the Broker has been reestablished and |
| /// that all recovery operations have succeeded and the connection will now be |
| /// transitioned to a recovered state. This method gives the listener a chance |
| /// so send any necessary post recovery commands such as consumer start or message |
| /// pull for a zero prefetch consumer etc. |
| /// </summary> |
| /// <param name="provider">The new Provider instance that will become active after the state has been recovered.</param> |
| Task OnConnectionRecovered(IProvider provider); |
| |
| /// <summary> |
| /// Called to signal that all recovery operations are now complete and the Provider |
| /// is again in a normal connected state. |
| /// |
| /// It is considered a programming error to allow any exceptions to be thrown from |
| /// this notification method. |
| /// </summary> |
| /// <param name="remoteUri">The Uri of the Broker that the client has now connected to.</param> |
| void OnConnectionRestored(Uri remoteUri); |
| |
| void OnResourceClosed(ResourceInfo resourceInfo, Exception error); |
| |
| /// <summary> |
| /// Called from a fault tolerant Provider instance to signal that the underlying |
| /// connection to the Broker has been lost. The Provider will attempt to reconnect |
| /// following this event unless closed. |
| /// |
| /// It is considered a programming error to allow any exceptions to be thrown from |
| /// this notification method. |
| /// </summary> |
| /// <param name="failedUri">The Uri of the Broker whose connection was lost.</param> |
| void OnConnectionInterrupted(Uri failedUri); |
| } |
| } |