Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Copyright (c) xlightweb.org, 2008 - 2010. All rights reserved.
   *
   *  This library 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 2.1 of the License, or (at your option) any later version.
   *
   *  This library 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 library; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Please refer to the LGPL license at: http://www.gnu.org/copyleft/lesser.txt
  * The latest copy of this software may be found on http://www.xlightweb.org/
  */
 package org.xlightweb;
 
 
 
 
 
 
 import  org.xsocket.DataConverter;



WebSocket Message

Author(s):
grro
 
 public abstract class WebSocketMessage {
 
     private final Data data;
     
     WebSocketMessage(ByteBuffer byteBufferDataString encoding) {
         this. = new Data(byteBufferDataencoding);
     }
 
     final Data getData() {
         return ;
     }
 
     public boolean isBinaryMessage() {
         return false;
     }
 
     
     public boolean isTextMessage() {
         return false;
     }
 
     
     abstract int writeTo(WebSocketConnection connectionIWebSocketMessageWriteCompleteHandler completeHandlerthrows IOException;
     
     
     
     static WebSocketMessage parse(ByteBuffer bufferthrows IOException {
 
         int savePos =  buffer.position();
         int saveLimit =  buffer.limit();
         
 
         WebSocketMessage msg = null;
         byte b = buffer.get();
 
         // text message
         if (TextMessage.isTextMessage(b)) {
             msg = TextMessage.parse(buffer);
         
         // binary message 
         } else if (BinaryMessage.isBinaryMessage(b)) {
             msg = BinaryMessage.parse(buffer);
             
         } else {
             buffer.position(savePos);        
             buffer.limit(saveLimit);
             throw new IOException("got invalid frame " + DataConverter.toTextAndHexString(new ByteBuffer[] { buffer }, "UTF-8", 4000));
         }
         
         if (msg == null) {
             buffer.position(savePos);        
             buffer.limit(saveLimit);
             return null;
             
         } else {
             return msg;
         }
     }
     
     
   
    public byte[] toBytes() {
        return .toBytes();
    }
    @Override
    public String toString() {
        return .toString();
    }
    
    public String toString(String charset) {
        return getData().toString(charset);
    }
    
    
    static final class Data {
        private final String encoding;
        
        private ByteBuffer byteBufferData;
        private byte[] byteData;
        
        
        public Data(ByteBuffer byteBufferDataString encoding) {
            this. = byteBufferData;
            this. = encoding;
        }
        
        public Data(byte[] byteDataString encoding) {
            this. = byteData;
            this. = encoding;
        }
        
        public byte[] toBytes() {
            if ( == null) {
                return DataConverter.toBytes();
            }
            
            return ;
        }
        
        ByteBuffer getByteBuffer() {
            if ( == null) {
                 = DataConverter.toByteBuffer();
            }
            
            return ;
        }
        
   
        @Override
        public String toString() {
            if ( == null) {
                return DataConverter.toHexString(new ByteBuffer[] { getByteBuffer().duplicate() }, .); 
            } else {
                return toString();
            }
        }
        
        public String toString(String charset) {
            try {
                return DataConverter.toString(getByteBuffer().duplicate(), charset);
            } catch (Exception e) {
                return "error occured by creating string representation: " + e.toString();
            }
        }
    }
}
New to GrepCode? Check out our FAQ X