- final RequestContext requestContext = requests.get(xid.getValue());
- if (null != requestContext) {
- final SettableFuture replyFuture = requestContext.getFuture();
- requests.remove(xid.getValue());
- final RpcResult<List<MultipartReply>> rpcResult = RpcResultBuilder
- .<List<MultipartReply>>success()
- .withResult(ofHeaderList)
- .build();
- replyFuture.set(rpcResult);
- for (MultipartReply multipartReply : ofHeaderList) {
- messageSpy.spyMessage(multipartReply.getImplementedInterface(), MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_FAILURE);
- }
-
- try {
- requestContext.close();
- } catch (final Exception e) {
- LOG.error("Closing RequestContext failed: ", e);
- }
- } else {
- LOG.error("Can't find request context registered for xid : {}. Type of reply: MULTIPART. From address: {}", xid.getValue(),
- getPrimaryConnectionContext().getConnectionAdapter().getRemoteAddress());
- }
- }
-
- @Override
- public void processException(final Xid xid, final DeviceDataException deviceDataException) {
-
- LOG.trace("Processing exception for xid : {}", xid.getValue());
-
- final RequestContext requestContext = requests.get(xid.getValue());
-
- if (null != requestContext) {
- final SettableFuture replyFuture = requestContext.getFuture();
- requests.remove(xid.getValue());
- final RpcResult<List<OfHeader>> rpcResult = RpcResultBuilder
- .<List<OfHeader>>failed()
- .withError(RpcError.ErrorType.APPLICATION, String.format("Message processing failed : %s", deviceDataException.getError()), deviceDataException)
- .build();
- replyFuture.set(rpcResult);
- messageSpy.spyMessage(deviceDataException.getClass(), MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_FAILURE);
- try {
- requestContext.close();
- } catch (final Exception e) {
- LOG.warn("Closing RequestContext failed: ", e);
- }
- } else {
- LOG.warn("Can't find request context registered for xid : {}. Exception message {}",
- xid.getValue(), deviceDataException.getMessage());