001: /*
002: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
004: *
005: * This program is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU General Public License version
007: * 2 only, as published by the Free Software Foundation.
008: *
009: * This program is distributed in the hope that it will be useful, but
010: * WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * General Public License version 2 for more details (a copy is
013: * included at /legal/license.txt).
014: *
015: * You should have received a copy of the GNU General Public License
016: * version 2 along with this work; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
018: * 02110-1301 USA
019: *
020: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
021: * Clara, CA 95054 or visit www.sun.com if you need additional
022: * information or have any questions.
023: */
024:
025: package com.sun.midp.jump.push.executive.remote;
026:
027: import com.sun.midp.jump.push.share.JUMPReservationDescriptor;
028: import java.io.IOException;
029: import java.rmi.Remote;
030: import java.rmi.RemoteException;
031: import javax.microedition.io.ConnectionNotFoundException;
032:
033: /** Remote interface for MIDP container. */
034: public interface MIDPContainerInterface extends Remote {
035: /**
036: * Registers connection reservation.
037: *
038: * <p>
039: * <code>midletSuiteId</code> and <code>midlet</code> should refer
040: * to valid <code>MIDlet</code>.
041: * </p>
042: *
043: * @param midletSuiteId ID of <code>MIDlet suite</code> to register
044: * connection for
045: *
046: * @param midlet <code>MIDlet</code> class name to reserve connection for
047: * (cannot be <code>null</code>)
048: *
049: * @param reservationDescriptor reservation descriptor
050: * (cannot be <code>null</code>)
051: *
052: * @throws IOException if connection cannot be reserved for the app
053: * @throws RemoteException as requested by RMI spec.
054: */
055: void registerConnection(int midletSuiteId, String midlet,
056: JUMPReservationDescriptor reservationDescriptor)
057: throws IOException, RemoteException;
058:
059: /**
060: * Unregisters connection.
061: *
062: * @param midletSuiteId ID of <code>MIDlet suite</code> to unregister
063: * connection for
064: *
065: * @param connectionName connection to unregister
066: * (cannot be <code>null</code>)
067: *
068: * @return <code>true</code> if the unregistration was successful,
069: * <code>false</code> otherwise.
070: *
071: * @throws SecurityException if the connection was registered by
072: * another <code>MIDlet</code> suite
073: * @throws RemoteException as requested by RMI spec.
074: */
075: boolean unregisterConnection(int midletSuiteId,
076: String connectionName) throws SecurityException,
077: RemoteException;
078:
079: /**
080: * Lists all the connections registered by the suite.
081: *
082: * <p>
083: * Close match to <code>PushRegistry.listConnections</code>
084: * </p>
085: *
086: * @param midletSuiteId <code>MIDlet</code> suite to list connections for
087: * @param available if <code>true</code>, list connections with available
088: * data
089: *
090: * @return connections
091: *
092: * @throws RemoteException as requested by RMI spec.
093: */
094: String[] listConnections(int midletSuiteId, boolean available)
095: throws RemoteException;
096:
097: /**
098: * Fetches the <code>MIDlet</code> by the connection.
099: *
100: * @param midletSuiteID <code>MIDlet</code> suite ID to query for
101: *
102: * @param connectionName connection as passed into
103: * {@link #registerConnection}
104: * (cannot be <code>null</code>)
105: *
106: * @return <code>MIDlet</code> associated with <code>connection</code> or
107: * <code>null</code> if there is no appropriate association
108: *
109: * @throws RemoteException as requested by RMI spec.
110: */
111: String getMIDlet(int midletSuiteID, String connectionName)
112: throws RemoteException;
113:
114: /**
115: * Fetches the filter by the connection.
116: *
117: * @param midletSuiteID <code>MIDlet</code> suite ID to query for
118: *
119: * @param connectionName connection as passed into
120: * {@link #registerConnection}
121: * (cannot be <code>null</code>)
122: *
123: * @return filter associated with <code>connection</code> or
124: * <code>null</code> if there is no appropriate association
125: *
126: * @throws RemoteException as requested by RMI spec.
127: */
128: String getFilter(int midletSuiteID, String connectionName)
129: throws RemoteException;
130:
131: /**
132: * Registers an alarm.
133: *
134: * <p>
135: * <code>midletSuiteId</code> and <code>midlet</code> should refer
136: * to valid <code>MIDlet</code>.
137: * </p>
138: *
139: * @param midletSuiteId ID of <code>MIDlet suite</code> to register
140: * an alarm for
141: *
142: * @param midlet <code>MIDlet</code> class name to register an alarm for
143: * (cannot be <code>null</code>)
144: *
145: * @param time alarm time
146: *
147: * @return time of previous registered (but not fired) alarm or 0
148: *
149: * @throws RemoteException as requested by RMI spec.
150: * @throws ConnectionNotFoundException if it's impossible to register alarm
151: */
152: long registerAlarm(int midletSuiteId, String midlet, long time)
153: throws RemoteException, ConnectionNotFoundException;
154: }
|