Package org.hive2hive.core.network.messages

Source Code of org.hive2hive.core.network.messages.TestMessageWithReply

package org.hive2hive.core.network.messages;

import org.hive2hive.core.H2HTestData;
import org.hive2hive.core.exceptions.NoPeerConnectionException;
import org.hive2hive.core.network.NetworkManager;
import org.hive2hive.core.network.NetworkTestUtil;
import org.hive2hive.core.network.data.parameters.Parameters;
import org.hive2hive.core.network.messages.direct.response.IResponseCallBackHandler;
import org.hive2hive.core.network.messages.direct.response.ResponseMessage;
import org.hive2hive.core.network.messages.request.RoutedRequestMessage;
import org.junit.Assert;

/**
* Used to test response messages and callback handlers. For further detail see
* {@link BaseRequestMessageTest#testSendingAnAsynchronousMessageWithReply()}
*
* @author Seppi
*/
public class TestMessageWithReply extends RoutedRequestMessage {

  private static final long serialVersionUID = 6358613094488111567L;

  private final String contentKey;

  public TestMessageWithReply(String targetKey, String contentKey) {
    super(targetKey);
    this.contentKey = contentKey;
  }

  @Override
  public void run() {
    String secret = NetworkTestUtil.randomString();

    try {
      networkManager
          .getDataManager()
          .putUnblocked(
              new Parameters().setLocationKey(networkManager.getNodeId())
                  .setContentKey(contentKey).setData(new H2HTestData(secret)))
          .awaitUninterruptibly();
    } catch (NoPeerConnectionException e) {
      Assert.fail();
    }

    sendDirectResponse(createResponse(secret));
  }

  @Override
  public AcceptanceReply accept() {
    return AcceptanceReply.OK;
  }

  public class TestCallBackHandler implements IResponseCallBackHandler {

    private final NetworkManager networkManager;

    public TestCallBackHandler(NetworkManager aNetworkManager) {
      networkManager = aNetworkManager;
    }

    @Override
    public void handleResponseMessage(ResponseMessage responseMessage) {
      String receivedSecret = (String) responseMessage.getContent();
      try {
        networkManager
            .getDataManager()
            .putUnblocked(
                new Parameters().setLocationKey(networkManager.getNodeId())
                    .setContentKey(contentKey).setData(new H2HTestData(receivedSecret)))
            .awaitUninterruptibly();
      } catch (NoPeerConnectionException e) {
        Assert.fail();
      }
    }

  }

}
TOP

Related Classes of org.hive2hive.core.network.messages.TestMessageWithReply

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.