net.sf.eBus.client.ReplyCallback Maven / Gradle / Ivy
The newest version!
//
// Copyright 2016 Charles W. Rapp
//
// Licensed 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.
//
package net.sf.eBus.client;
import net.sf.eBus.messages.EReplyMessage;
/**
* This functional interface may be used to handle reply message
* delivery instead of
* {@link ERequestor#reply(int, EReplyMessage, ERequestFeed.ERequest)}
* by passing a {@code ReplyCallback} instance to
* {@link ERequestFeed#replyCallback(ReplyCallback)}. This
* allows a tighter coupling between a feed and the code for
* processing the feed's reply messages.
*
* Note: This must be done after opening a {@link ERequestFeed}
* and before subscribing.
*
*
* @see ERequestFeed#replyCallback(ReplyCallback)
* @see ERequestFeed#replyCallback(Class, ReplyCallback)
*
* @author Charles W. Rapp
*/
@FunctionalInterface
public interface ReplyCallback
{
//---------------------------------------------------------------
// Member methods.
//
/**
* One or more replies to an outstanding request. Because
* this interface is used for both exclusive and inclusive
* requests, replies are passed in a collection as an
* inclusive request may have multiple repliers. There is
* no guarantee all replies to an inclusive request have the
* same status. Each reply must be examined on its own
* merits.
* @param remaining the number of replies yet to be received.
* Zero means all replies received and no more will be
* forthcoming.
* @param reply the latest reply.
* @param request the reply is for this request.
*/
void call(int remaining,
EReplyMessage reply,
ERequestFeed.ERequest request);
} // end of interface ReplyCallback