| /******************************************************************************* |
| * Copyright (c) 1997-2007 by ProSyst Software GmbH |
| * http://www.prosyst.com |
| * 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: |
| * ProSyst Software GmbH - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.equinox.internal.io.util; |
| |
| import java.util.*; |
| import javax.microedition.io.Connection; |
| import org.eclipse.equinox.internal.io.ConnectionListener; |
| import org.eclipse.equinox.internal.io.ConnectionNotifier; |
| |
| /** |
| * @author Pavlin Dobrev |
| * @version 1.0 |
| */ |
| |
| public abstract class AbstractConnectionNotifier extends Dictionary implements ConnectionNotifier { |
| private Vector list; |
| private Hashtable info; |
| |
| // the local address to which the connection is bound |
| |
| public final static String LOCAL_ADDRESS = "local_address"; |
| |
| // the local port to which the connection is bound. |
| |
| public final static String LOCAL_PORT = "local_port"; |
| |
| // the remote address to which the connection is connected. |
| |
| public final static String ADDRESS = "address"; |
| |
| // the remote port to which the connection is connected. |
| |
| public final static String PORT = "port"; |
| |
| // the encoder used |
| |
| public final static String ENCODER = "enc"; |
| |
| public static final String SO_TIMEOUT = "timeout"; |
| |
| protected AbstractConnectionNotifier() { |
| list = new Vector(2, 3); |
| info = new Hashtable(30); |
| } |
| |
| // ConnectionNotifier methods |
| public void addConnectionListener(ConnectionListener l) { |
| if (!list.contains(l)) { |
| list.addElement(l); |
| } |
| } |
| |
| public void removeConnectionListener(ConnectionListener l) { |
| list.removeElement(l); |
| } |
| |
| // returns the url of connection |
| protected abstract String getURL(); |
| |
| // the connection to which this ConnectionLife is bound to |
| protected abstract Connection getConnection(); |
| |
| protected void notifyClosed() { |
| for (Enumeration en = list.elements(); en.hasMoreElements();) { |
| ConnectionListener l = (ConnectionListener) en.nextElement(); |
| l.notify(getURL(), ConnectionListener.CONNECTION_CLOSED, getConnection()); |
| } |
| } |
| |
| protected void setInfo(String key, Object value) { |
| if (key != null && value != null) { |
| info.put(key, value); |
| } |
| } |
| |
| public int size() { |
| return info.size(); |
| } |
| |
| public boolean isEmpty() { |
| return info.isEmpty(); |
| } |
| |
| public Enumeration keys() { |
| return info.keys(); |
| } |
| |
| public Enumeration elements() { |
| return info.elements(); |
| } |
| |
| public Object get(Object key) { |
| return info.get(key); |
| } |
| |
| public Object remove(Object key) { |
| return info.remove(key); |
| } |
| |
| } |