Package org.eclipse.ecf.provider.generic

Source Code of org.eclipse.ecf.provider.generic.SOConnector

/****************************************************************************
* Copyright (c) 2004 Composent, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Composent, Inc. - initial API and implementation
*****************************************************************************/

/*
* Created on Dec 20, 2004
*/
package org.eclipse.ecf.provider.generic;

import java.util.Enumeration;
import java.util.Hashtable;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.sharedobject.ISharedObjectConnector;
import org.eclipse.ecf.core.sharedobject.events.ISharedObjectEvent;
import org.eclipse.ecf.core.sharedobject.util.IQueueEnqueue;
import org.eclipse.ecf.core.sharedobject.util.QueueException;

public class SOConnector implements ISharedObjectConnector {
  ID sender;
  Hashtable receiverQueues = null;

  public SOConnector(ID sender, ID[] recv, IQueueEnqueue[] queues) {
    super();
    this.receiverQueues = new Hashtable();
    for (int i = 0; i < recv.length; i++) {
      receiverQueues.put(recv[i], queues[i]);
    }
  }

  protected void fireEvent(ISharedObjectEvent event) throws QueueException {
    for (Enumeration e = receiverQueues.elements(); e.hasMoreElements();) {
      IQueueEnqueue queue = (IQueueEnqueue) e.nextElement();
      queue.enqueue(event);
    }
  }

  protected void fireEvents(ISharedObjectEvent[] event) throws QueueException {
    for (Enumeration e = receiverQueues.elements(); e.hasMoreElements();) {
      IQueueEnqueue queue = (IQueueEnqueue) e.nextElement();
      if (queue != null) {
        queue.enqueue(event);
      }
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.ISharedObjectConnector#getSender()
   */
  public ID getSenderID() {
    return sender;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.ISharedObjectConnector#getReceivers()
   */
  public ID[] getReceiverIDs() {
    return (ID[]) receiverQueues.keySet().toArray(new ID[receiverQueues.size()]);
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.ISharedObjectConnector#enqueue(org.eclipse.ecf.core.events.ISharedObjectEvent)
   */
  public void enqueue(ISharedObjectEvent event) throws QueueException {
    fireEvent(event);
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.ISharedObjectConnector#enqueue(org.eclipse.ecf.core.events.ISharedObjectEvent[])
   */
  public void enqueue(ISharedObjectEvent[] events) throws QueueException {
    fireEvents(events);
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.ISharedObjectConnector#dispose()
   */
  public void dispose() {
    if (receiverQueues != null) {
      receiverQueues.clear();
      receiverQueues = null;
    }
    sender = null;
  }
}
TOP

Related Classes of org.eclipse.ecf.provider.generic.SOConnector

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.