Package Framework

Source Code of Framework.RemoteEventImpl

package Framework;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Hashtable;

import Framework.anchored.AnchoredProxy;
import Framework.anchored.MethodMapper;
import Framework.anchored.ServiceInvoker;
import Framework.anchored.ServiceProxy;

public class RemoteEventImpl extends RemoteEvent implements AnchoredProxy, RemoteProxy {
    private transient ServiceProxy proxy = null;
    private String objectName;
    private String hostName;
    private int port;

    /**
     * This constructor can store no reference to the original object,
     * but must instead copy over it's necessary attributes.
     */
    public RemoteEventImpl(RemoteEvent baseClass) {
        super(new ServiceObjectContext());
        ServiceInvoker serviceInvoker = getInvoker(baseClass);
        if (serviceInvoker == null) {
            throw new UsageException("Cannot create a proxy for an object that has not yet been exported.");
        }
        serviceInvoker.prepareForRemoteCall();
        this.objectName = serviceInvoker.getObjectName();
        // The proxy is being created on the same host as the real object
        //this.hostName = System.getProperty("RMIregistry.host");
        try {
            this.hostName = InetAddress.getLocalHost().getHostAddress();
        } catch (UnknownHostException e) {
            throw new UsageException("Cannot BIND to RMI object ", e);
        }
        this.port = serviceInvoker.getPort();
    }

    private ServiceProxy getServiceProxy() {
        if (proxy == null) {
            proxy = new ServiceProxy(objectName, hostName, port, this.getClass().getSuperclass());
        }
        return proxy;
    }

  @Override
    public void postEvent(String pObjectMoniker, String pEventName, Hashtable<String, Object> pParams) {
        String qq_name = MethodMapper.computeName("postEvent", String.class, String.class, Hashtable.class);
        getServiceProxy().intercept(qq_name, pObjectMoniker, pEventName, pParams);
    }
 
  /**
   * Override the equals method so that we are equal to any other RemoteEventImpl which comes from the
   * same host on the same port and the same object name
   */
  @Override
  public boolean equals(Object obj) {
    if (obj instanceof RemoteEventImpl) {
      RemoteEventImpl rei = (RemoteEventImpl)obj;
      return StringUtils.equals(hostName, rei.hostName) && StringUtils.equals(objectName, rei.objectName) && port == rei.port;
    }
    return false;
  }
 
  @Override
  public int hashCode() {
    return this.toString().hashCode();
  }
 
  @Override
  public String toString() {
    return "" + hostName + "\\" + port + "\\" + objectName;
  }
}
TOP

Related Classes of Framework.RemoteEventImpl

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.