You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2010/03/08 21:35:18 UTC

svn commit: r920495 - in /mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper: mina/XmppIoHandlerAdapter.java xmpp/protocol/ResponseWriter.java xmpp/server/AbstractSessionContext.java xmpp/server/SessionContext.java

Author: berndf
Date: Mon Mar  8 20:35:18 2010
New Revision: 920495

URL: http://svn.apache.org/viewvc?rev=920495&view=rev
Log:
VYSPER-185: introduce a parameter revealing the cause for calling SessionContext.endSession() as a first step towards doing the right thing on session termination

Modified:
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java?rev=920495&r1=920494&r2=920495&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java Mon Mar  8 20:35:18 2010
@@ -106,7 +106,7 @@
         String sessionId = "UNKNOWN";
         if(sessionContext != null) {
             sessionId = sessionContext.getSessionId();
-            sessionContext.endSession();
+            sessionContext.endSession(SessionContext.SessionTerminationCause.CONNECTION_ABORT);
         }
         logger.info("session {} has been closed", sessionId);
     }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java?rev=920495&r1=920494&r2=920495&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java Mon Mar  8 20:35:18 2010
@@ -123,7 +123,7 @@
 
     public static void writeErrorAndClose(SessionContext sessionContext, Stanza errorStanza) {
         writeResponse(sessionContext, errorStanza);
-        sessionContext.endSession();
+        sessionContext.endSession(SessionContext.SessionTerminationCause.STREAM_ERROR);
     }
 
 

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java?rev=920495&r1=920494&r2=920495&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java Mon Mar  8 20:35:18 2010
@@ -107,7 +107,7 @@
         xmlLang = languageCode;
     }
 
-    public void endSession() {
+    public void endSession(SessionTerminationCause terminationCause) {
         StanzaWriter stanzaWriter = getResponseWriter();
         stanzaWriter.close();
         sessionStateHolder.setState(SessionState.CLOSED); // no more traffic going through

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java?rev=920495&r1=920494&r2=920495&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java Mon Mar  8 20:35:18 2010
@@ -34,6 +34,26 @@
     static final String SESSION_ATTRIBUTE_MESSAGE_STANZA_NO_RECEIVE = "stanza.message.no_receive";
     static final String SESSION_ATTRIBUTE_PRESENCE_STANZA_NO_RECEIVE = "stanza.presence.no_receive";
 
+    public enum SessionTerminationCause {
+        /**
+         * underlying connection is broken
+         */
+        CONNECTION_ABORT,
+        /**
+         * the client regularily ended the session (sending </stream:stream>)
+         */
+        CLIENT_BYEBYE,
+        /**
+         * the server is in progress of shutting down
+         */
+        SERVER_SHUTDOWN,
+        /**
+         * the server signalled a stream error to the client and subsequently needs
+         * to close the session down 
+         */
+        STREAM_ERROR, 
+    }
+    
 	/**
 	 * Gets the {@link ServerRuntimeContext}.
 	 *
@@ -110,8 +130,9 @@
 
 	/**
 	 * Ends this session and the underlying TCP connection.
+     * @param give the logical cause for the session's end
 	 */
-	void endSession();
+	void endSession(SessionTerminationCause terminationCause);
 
 	/**
 	 * Gets the JID of the server this session is associated with.