Package com.kylin.jgroups.test

Source Code of com.kylin.jgroups.test.RpcDispatcherTestWithRespFilter

package com.kylin.jgroups.test;

import org.apache.log4j.Logger;
import org.jgroups.Address;
import org.jgroups.Channel;
import org.jgroups.JChannel;
import org.jgroups.blocks.MethodCall;
import org.jgroups.blocks.RequestOptions;
import org.jgroups.blocks.ResponseMode;
import org.jgroups.blocks.RpcDispatcher;
import org.jgroups.blocks.RspFilter;
import org.jgroups.util.RspList;
import org.jgroups.util.Util;

import com.kylin.jgroups.TestBase;
import com.kylin.jgroups.User;

public class RpcDispatcherTestWithRespFilter extends TestBase implements IRPCInvokeMethod {
 
  private static final Logger logger = Logger.getLogger(RpcDispatcherTestWithRespFilter.class);
 
  private RpcDispatcher disp;
  private static Channel channel;
  private RspList rsp_list;


  public void test() throws Exception {
   
    logger.info("'org.jgroups.blocks.RpcDispatcher' test with response filter");
   
    channel = new JChannel();
    disp = new RpcDispatcher(channel, this);
    channel.connect("RpcDispatcherTestGroup");
   
    logger.info(" -> View Id: " + channel.getView().getViewId());
    logger.info(" -> View Creater: " + channel.getView().getCreator());
    logger.info(" -> View Coordinator: " + channel.getView().getMembers().get(0));
    logger.info(" -> View Memembers: " + channel.getView().getMembers() + "\n");
   
    RequestOptions requestOptions = new RequestOptions(ResponseMode.GET_ALL, 5000, false, new RspFilter(){

      int num=0;

      public boolean isAcceptable(Object response, Address sender) {
        System.out.println("&& " + response);
        return true;

      }

      public boolean needMoreResponses() {
        return num < 2;
      }});
   
    for (int i = 0; i < 5; i++){
      Util.sleep(100);
      System.out.println("Invoke all members 'getUser' method");
      rsp_list = disp.callRemoteMethods(null
                      , "getUser"
                      , new Object[]{101, "RPC remote test", new User(1000, "Kylin Soong", "IT")}
                      , new Class[]{int.class, String.class, User.class}
                      , requestOptions);
      System.out.println("Responses:\n" + rsp_list);
    }
  }

  public static void main(String[] args) throws Exception {

    new RpcDispatcherTestWithRespFilter().test();
  }

  public User getUser(int id, String name, User user) {
   
    logger.info("getUser method invoked, id: " + id + ", name: " + name + ", user: " + user);
    return new User(channel.getView().size(), "View ID: " + channel.getView().getViewId(), "View Memembers: " + channel.getView().getMembers());
  }

}
TOP

Related Classes of com.kylin.jgroups.test.RpcDispatcherTestWithRespFilter

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.