X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-connector-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnector%2Fapi%2FBindingAwareRpcRouter.java;fp=opendaylight%2Fmd-sal%2Fsal-connector-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnector%2Fapi%2FBindingAwareRpcRouter.java;h=11df1ff9c60a9d67dc7434a7dbffdeda8a7cd035;hb=206b6688f5be750d1c66c7e6d5fd1d62511db2af;hp=0000000000000000000000000000000000000000;hpb=76b8b1fc0196ec1a2516ae1a682b0b83ef5ca880;p=controller.git diff --git a/opendaylight/md-sal/sal-connector-api/src/main/java/org/opendaylight/controller/sal/connector/api/BindingAwareRpcRouter.java b/opendaylight/md-sal/sal-connector-api/src/main/java/org/opendaylight/controller/sal/connector/api/BindingAwareRpcRouter.java new file mode 100644 index 0000000000..11df1ff9c6 --- /dev/null +++ b/opendaylight/md-sal/sal-connector-api/src/main/java/org/opendaylight/controller/sal/connector/api/BindingAwareRpcRouter.java @@ -0,0 +1,114 @@ +package org.opendaylight.controller.sal.connector.api; + +import java.util.concurrent.Future; + +import org.opendaylight.yangtools.concepts.Immutable; + +public interface BindingAwareRpcRouter extends RpcRouter { + + @Override + public Future> sendRpc( + RpcRequest input); + + class BindingAwareRequest implements RpcRequest, Immutable { + + private final BindingAwareRouteIdentifier routingInformation; + private final byte[] payload; + + public BindingAwareRequest(BindingAwareRouteIdentifier routingInformation, byte[] payload) { + super(); + this.routingInformation = routingInformation; + this.payload = payload; + } + + public BindingAwareRouteIdentifier getRoutingInformation() { + return this.routingInformation; + } + + @Override + public byte[] getPayload() { + return payload; + } + } + + class BindingAwareRouteIdentifier implements RouteIdentifier, Immutable { + + private final String type; + private final String route; + private final String content; + + public BindingAwareRouteIdentifier(String type, String route, String content) { + super(); + this.type = type; + this.route = route; + this.content = content; + } + + /** + * Java class name of Rpc Context + * + * + */ + @Override + public String getContext() { + return this.content; + } + + /** + * String representation of route e.g. node-id + * + */ + @Override + public String getRoute() { + return this.route; + } + + /** + * Java class name of Rpc Type e.g org.opendaylight.AddFlowInput + * + */ + @Override + public String getType() { + return this.type; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((content == null) ? 0 : content.hashCode()); + result = prime * result + ((route == null) ? 0 : route.hashCode()); + result = prime * result + ((type == null) ? 0 : type.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BindingAwareRouteIdentifier other = (BindingAwareRouteIdentifier) obj; + if (content == null) { + if (other.content != null) + return false; + } else if (!content.equals(other.content)) + return false; + if (route == null) { + if (other.route != null) + return false; + } else if (!route.equals(other.route)) + return false; + if (type == null) { + if (other.type != null) + return false; + } else if (!type.equals(other.type)) + return false; + return true; + } + + } + +}