Android Open Source - smsgateway-android Session






From Project

Back to project page smsgateway-android.

License

The source code is released under:

GNU General Public License

If you think the Android project smsgateway-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 *//from   ww w .j  a v a2s .  co m
 * ((e)) emite: A pure gwt (Google Web Toolkit) xmpp (jabber) library
 *
 * (c) 2008-2009 The emite development team (see CREDITS for details)
 * This file is part of emite.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
package com.calclab.emite.core.client.xmpp.session;

import com.calclab.emite.core.client.bosh.StreamSettings;
import com.calclab.emite.core.client.packet.IPacket;
import com.calclab.emite.core.client.xmpp.sasl.SASLManager;
import com.calclab.emite.core.client.xmpp.stanzas.IQ;
import com.calclab.emite.core.client.xmpp.stanzas.Message;
import com.calclab.emite.core.client.xmpp.stanzas.Presence;
import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
import com.calclab.suco.client.events.Listener;

/**
 * The most important object in Xmpp emite module. You can login, send and
 * receive stanzas. It also allows you to pause and resume the session.
 * 
 */
public interface Session {

  /**
   * Different session states. The different states paths are:
   * <ul>
   * <li>Successfull login: (disconnected) - connecting - authorized -
   * loggedIn - ready</li>
   * <li>Unsuccessfull login: (disconnected) - connecting - notAuthorized -
   * disconected</li>
   * <li>Loging out: (ready) - loggingOut - disconnected</li>
   * </ul>
   */
  public static enum State {
    /**
     * The authorization was successfull. You can NOT send stanzas using the
     * session (stanzas will be queued). If you need to send stanzas, use
     * the connection object directly
     */
    authorized,
    /**
     * You are logged in. This is the first state when you can send stanzas.
     */
    loggedIn,
    /**
     * Start login process. You can NOT send stanzas using session (you
     * should use the connection directly)
     */
    connecting,
    /**
     * We are disconnected. You can NOT send stanzas.
     */
    disconnected, error, notAuthorized,
    /**
     * The session is ready to use. All the queued stanzas are sent just
     * before this state.
     */
    ready,
    /**
     * We are loggin out. Last oportunity to send stanzas (i.e: last
     * presence). session.getCurrentUser() returns the current user;
     */
    loggingOut
  }

  public static XmppURI ANONYMOUS = SASLManager.ANONYMOUS;

  /**
   * Returns the current user xmpp uri
   * 
   * @return the current user xmpp uri
   */
  public abstract XmppURI getCurrentUser();

  /**
   * Returns the current state
   * 
   * @return a session.state enum type
   */
  public abstract State getState();

  /**
   * Answer if is logged in or not
   * 
   * @return true if a user is logged in
   */
  public abstract boolean isLoggedIn();

  /**
   * <p>
   * Start a login process with the current xmpp uri and password. Use
   * onLoggedIn method to know when you are really logged in. If the uri
   * doesn't provide a resource, the session will generate one.
   * </p>
   * <p>
   * You can use Session.ANONYMOUS and null as password to do an anonymous
   * login.
   * </p>
   * 
   * @param uri
   *            the user's uri to loggin
   * @param password
   *            the user's password
   */
  public abstract void login(final XmppURI uri, final String password);

  /**
   * Start a logout process in the current session. Use obnLoggedOut to know
   * when you are really logged out.
   */
  public abstract void logout();

  /**
   * The given listener is called when a IQ <b>of type 'get' or 'set'</b> is
   * received
   * 
   * @param listener
   */
  public abstract void onIQ(Listener<IQ> listener);

  /**
   * The given listener is called when a message stanza has arrived
   * 
   * @param listener
   * 
   */
  public abstract void onMessage(final Listener<Message> listener);

  /**
   * The given listener is called when a presence stanza has arrived
   * 
   * @param listener
   */
  public abstract void onPresence(final Listener<Presence> listener);

  /**
   * The given listener is called when the session changed it's state
   * 
   * @param listener
   */
  public abstract void onStateChanged(final Listener<State> listener);

  /**
   * Call this method to pause the session. You can use the given object
   * object (or other with the same data) to resume the session later.
   * 
   * @see http://www.xmpp.org/extensions/xep-0124.html#inactive
   * @see Session.resume
   * @return
   */
  public abstract StreamSettings pause();

  /**
   * Call this method to resume a session.
   * 
   * @see http://www.xmpp.org/extensions/xep-0124.html#inactive
   * @see Session.pause
   * @param userURI
   *            the previous session user's uri
   * @param settings
   *            the stream settings given by the pause method
   */
  public abstract void resume(XmppURI userURI, StreamSettings settings);

  /**
   * Send a stanza to the server. This method overrides the "from" uri
   * attribute.
   * 
   * <b>All the stanzas sent using this method BEFORE the LoggedIn state are
   * queued and sent AFTER Ready state.</b>
   * 
   * @see sendIQ
   * @param stanza
   *            the stanza to be sent
   */
  public abstract void send(final IPacket stanza);

  /**
   * A helper method that allows to send a IQ stanza and attach a listener to
   * the response. This method overrides (if present) the given IQ id using
   * the category provided and a internal sequential number. This method also
   * overrides (if present) the given 'from' attribute
   * 
   * <b>All the stanzas sent using this method BEFORE the LoggedIn state are
   * queued and sent AFTER Ready state.</b>
   * 
   * @param category
   *            a uniqe-per-component string that allows the session to
   *            generate a sequential and uniqe id for the IQ
   * @param iq
   *            the IQ stanza to be sent
   * @param listener
   *            the listener called when a IQ of type "result" arrives to the
   *            server. After the invocation, the listener is discarded
   * 
   */
  public abstract void sendIQ(final String category, final IQ iq,
      final Listener<IPacket> listener);

  /**
   * Presence managers should call this method when initial presence is sent
   */
  public void setReady();
}




Java Source Code List

com.calclab.emite.core.client.EmiteCoreModule.java
com.calclab.emite.core.client.bosh.BoshConnection.java
com.calclab.emite.core.client.bosh.BoshSettings.java
com.calclab.emite.core.client.bosh.Connection.java
com.calclab.emite.core.client.bosh.StreamSettings.java
com.calclab.emite.core.client.packet.AbstractPacket.java
com.calclab.emite.core.client.packet.DelegatedPacket.java
com.calclab.emite.core.client.packet.IPacket.java
com.calclab.emite.core.client.packet.MatcherFactory.java
com.calclab.emite.core.client.packet.NoPacket.java
com.calclab.emite.core.client.packet.PacketMatcher.java
com.calclab.emite.core.client.packet.PacketRenderer.java
com.calclab.emite.core.client.packet.PacketTestSuite.java
com.calclab.emite.core.client.packet.Packet.java
com.calclab.emite.core.client.packet.TextPacket.java
com.calclab.emite.core.client.packet.TextUtils.java
com.calclab.emite.core.client.packet.android.AndroidPacket.java
com.calclab.emite.core.client.services.ConnectorCallback.java
com.calclab.emite.core.client.services.ConnectorException.java
com.calclab.emite.core.client.services.ScheduledAction.java
com.calclab.emite.core.client.services.Services.java
com.calclab.emite.core.client.services.android.AndroidConnector.java
com.calclab.emite.core.client.services.android.AndroidScheduler.java
com.calclab.emite.core.client.services.android.AndroidServices.java
com.calclab.emite.core.client.services.android.AndroidXMLService.java
com.calclab.emite.core.client.xmpp.resource.ResourceBindingManager.java
com.calclab.emite.core.client.xmpp.sasl.AuthorizationTransaction.java
com.calclab.emite.core.client.xmpp.sasl.Base64Coder.java
com.calclab.emite.core.client.xmpp.sasl.SASLManager.java
com.calclab.emite.core.client.xmpp.session.AbstractSession.java
com.calclab.emite.core.client.xmpp.session.IMSessionManager.java
com.calclab.emite.core.client.xmpp.session.IQManager.java
com.calclab.emite.core.client.xmpp.session.SessionComponent.java
com.calclab.emite.core.client.xmpp.session.SessionImpl.java
com.calclab.emite.core.client.xmpp.session.SessionReady.java
com.calclab.emite.core.client.xmpp.session.Session.java
com.calclab.emite.core.client.xmpp.stanzas.BasicStanza.java
com.calclab.emite.core.client.xmpp.stanzas.IQ.java
com.calclab.emite.core.client.xmpp.stanzas.Message.java
com.calclab.emite.core.client.xmpp.stanzas.Presence.java
com.calclab.emite.core.client.xmpp.stanzas.Stanza.java
com.calclab.emite.core.client.xmpp.stanzas.XmppURICache.java
com.calclab.emite.core.client.xmpp.stanzas.XmppURI.java
com.calclab.emite.im.client.InstantMessagingModule.java
com.calclab.emite.im.client.chat.AbstractChat.java
com.calclab.emite.im.client.chat.ChatManager.java
com.calclab.emite.im.client.chat.Chat.java
com.calclab.emite.im.client.chat.PairChatManager.java
com.calclab.emite.im.client.chat.PairChat.java
com.calclab.emite.im.client.presence.PresenceManagerImpl.java
com.calclab.emite.im.client.presence.PresenceManager.java
com.calclab.emite.im.client.roster.RosterImpl.java
com.calclab.emite.im.client.roster.RosterItem.java
com.calclab.emite.im.client.roster.Roster.java
com.calclab.emite.im.client.roster.SubscriptionManagerImpl.java
com.calclab.emite.im.client.roster.SubscriptionManager.java
com.calclab.emite.im.client.roster.SubscriptionState.java
com.calclab.suco.client.SucoCoreModule.java
com.calclab.suco.client.SucoFactory.java
com.calclab.suco.client.Suco.java
com.calclab.suco.client.events.Event0.java
com.calclab.suco.client.events.Event2.java
com.calclab.suco.client.events.Event.java
com.calclab.suco.client.events.Listener0.java
com.calclab.suco.client.events.Listener2.java
com.calclab.suco.client.events.Listener.java
com.calclab.suco.client.ioc.Container.java
com.calclab.suco.client.ioc.Decorator.java
com.calclab.suco.client.ioc.HashMapContainer.java
com.calclab.suco.client.ioc.Provider.java
com.calclab.suco.client.ioc.decorator.Chain.java
com.calclab.suco.client.ioc.decorator.GroupedSingleton.java
com.calclab.suco.client.ioc.decorator.NoDecoration.java
com.calclab.suco.client.ioc.decorator.ProviderCollection.java
com.calclab.suco.client.ioc.decorator.Singleton.java
com.calclab.suco.client.ioc.module.AbstractModule.java
com.calclab.suco.client.ioc.module.Factory.java
com.calclab.suco.client.ioc.module.ModuleBuilderImpl.java
com.calclab.suco.client.ioc.module.ModuleBuilder.java
com.calclab.suco.client.ioc.module.SucoModule.java
com.calclab.suco.client.log.Logger.java
com.calclab.suco.client.signal.Signal0.java
com.calclab.suco.client.signal.Signal2.java
com.calclab.suco.client.signal.Signal.java
com.calclab.suco.client.signal.Slot0.java
com.calclab.suco.client.signal.Slot2.java
com.calclab.suco.client.signal.Slot.java
com.nubgames.smsgateway.BOSHConnection.java
com.nubgames.smsgateway.BootCompleted.java
com.nubgames.smsgateway.Password.java
com.nubgames.smsgateway.SMSGateway.java
com.nubgames.smsgateway.SMSReceiver.java
com.nubgames.smsgateway.Settings.java
com.nubgames.smsgateway.StatusTextView.java
com.nubgames.smsgateway.Status.java
com.nubgames.smsgateway.TextRouter.java