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.


Reply via email to