// Path: rdfagents-core/src/main/java/net/fortytwo/rdfagents/model/ErrorExplanation.java
// public class ErrorExplanation {
//     private final Type type;
//     private final String message;
// 
//     public enum Type {
//         ExternalError("external-error"),
//         InteractionExplired("interaction-expired"),
//         InternalError("internal-error"),
//         InvalidMessage("invalid-message"),
//         NotImplemented("not-implemented"),
//         Unavailable("unavailable");
// 
//         private final String fipaName;
// 
//         private Type(final String fipaName) {
//             this.fipaName = fipaName;
//         }
// 
//         public String getFipaName() {
//             return fipaName;
//         }
// 
//         public static Type getByFipaName(final String fipaName) {
//             for (Type t : values()) {
//                 if (t.fipaName.equals(fipaName)) {
//                     return t;
//                 }
//             }
// 
//             return null;
//         }
//     }
// 
//     public ErrorExplanation(final Type type,
//                             final String message) {
//         this.type = type;
//         this.message = message;
// 
//         if (null == type) {
//             throw new IllegalArgumentException("null type");
//         }
// 
//         if (null == message) {
//             throw new IllegalArgumentException("null message");
//         }
// 
//         if (0 == message.length()) {
//             throw new IllegalArgumentException("empty message");
//         }
//     }
// 
//     public Type getType() {
//         return type;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public String toString() {
//         return type + " (" + message + ")";
//     }
// }


import net.fortytwo.rdfagents.model.ErrorExplanation;
package net.fortytwo.rdfagents.messaging;


/**
 * A handler for all possible outcomes of a query cancellation request.
 *
 * @author Joshua Shinavier (http://fortytwo.net)
 */
public interface CancellationCallback {
    /**
     * Indicates success of the cancellation request.
     */
    void success();

    /**
     * Indicates failure of the cancellation request.
     *
     * @param explanation an explanation of failure, provided by the remote participant
     */
// Path: rdfagents-core/src/main/java/net/fortytwo/rdfagents/model/ErrorExplanation.java
// public class ErrorExplanation {
//     private final Type type;
//     private final String message;
// 
//     public enum Type {
//         ExternalError("external-error"),
//         InteractionExplired("interaction-expired"),
//         InternalError("internal-error"),
//         InvalidMessage("invalid-message"),
//         NotImplemented("not-implemented"),
//         Unavailable("unavailable");
// 
//         private final String fipaName;
// 
//         private Type(final String fipaName) {
//             this.fipaName = fipaName;
//         }
// 
//         public String getFipaName() {
//             return fipaName;
//         }
// 
//         public static Type getByFipaName(final String fipaName) {
//             for (Type t : values()) {
//                 if (t.fipaName.equals(fipaName)) {
//                     return t;
//                 }
//             }
// 
//             return null;
//         }
//     }
// 
//     public ErrorExplanation(final Type type,
//                             final String message) {
//         this.type = type;
//         this.message = message;
// 
//         if (null == type) {
//             throw new IllegalArgumentException("null type");
//         }
// 
//         if (null == message) {
//             throw new IllegalArgumentException("null message");
//         }
// 
//         if (0 == message.length()) {
//             throw new IllegalArgumentException("empty message");
//         }
//     }
// 
//     public Type getType() {
//         return type;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public String toString() {
//         return type + " (" + message + ")";
//     }
// }


// Path: rdfagents-core/src/main/java/net/fortytwo/rdfagents/messaging/CancellationCallback.java
import net.fortytwo.rdfagents.model.ErrorExplanation;

package net.fortytwo.rdfagents.messaging;


/**
 * A handler for all possible outcomes of a query cancellation request.
 *
 * @author Joshua Shinavier (http://fortytwo.net)
 */
public interface CancellationCallback {
    /**
     * Indicates success of the cancellation request.
     */
    void success();

    /**
     * Indicates failure of the cancellation request.
     *
     * @param explanation an explanation of failure, provided by the remote participant
     */
    void remoteFailure(ErrorExplanation explanation);