+ public MappingData getMapping(MappingOrigin origin, Eid key) {
+ return mappingSystem.getMapping(origin, key);
+ }
+
+ @Override
+ public MappingData getMapping(Eid key) {
+ return mappingSystem.getMapping(key);
+ }
+
+ @Override
+ public MappingData getMapping(Eid srcKey, Eid dstKey) {
+ return mappingSystem.getMapping(srcKey, dstKey);
+ }
+
+ @Override
+ public void subscribe(Subscriber subscriber, Eid subscribedEid) {
+ mappingSystem.subscribe(subscriber, subscribedEid);
+ }
+
+ @Override
+ public Set<Subscriber> getSubscribers(Eid eid) {
+ return mappingSystem.getSubscribers(eid);
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<GetMappingWithXtrIdOutput>> getMappingWithXtrId(GetMappingWithXtrIdInput input) {
+ requireNonNull(input, "get-mapping RPC input must be not null!");
+ LOG.trace("RPC received to get the following mapping: " + input.toString());
+
+ RpcResultBuilder<GetMappingWithXtrIdOutput> rpcResultBuilder;
+
+ MappingData reply = mappingSystem.getMapping(null, convertToBinaryIfNecessary(input.getEid()),
+ input.getXtrId());
+
+ if (reply == null) {
+ String message = "No mapping was found in the mapping database";
+ rpcResultBuilder = RpcResultBuilder.<GetMappingWithXtrIdOutput>failed()
+ .withError(RpcError.ErrorType.APPLICATION, NOT_FOUND_TAG, message);
+ } else {
+ final MappingRecord convertedReply = convertFromBinaryIfNecessary(reply.getRecord());
+ rpcResultBuilder = RpcResultBuilder.success(new GetMappingWithXtrIdOutputBuilder()
+ .setMappingRecord(convertedReply));
+ }
+
+ return Futures.immediateFuture(rpcResultBuilder.build());
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<RemoveKeyOutput>> removeKey(RemoveKeyInput input) {
+ requireNonNull(input, "remove-key RPC input must be not null!");