Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2010 Red Hat Inc. and/or its affiliates and other
   * contributors as indicated by the @author tags. All rights reserved.
   * See the copyright.txt in the distribution for a full listing of
   * individual contributors.
   *
   * This 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 software 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 software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.infinispan.server.websocket;
 
 import java.util.Map;
 
An HTTP server which serves Web Socket requests on an Infinispan cacheManager.

Websocket specific code lifted from Netty WebSocket Server example.

 
 public class WebSocketServer extends AbstractProtocolServer {
 
    public static final String INFINISPAN_WS_JS_FILENAME = "infinispan-ws.js";
 
    private static String javascript;
    private Channel channel;
 
    public WebSocketServer() {
       super("WebSocketServerThread");
    }
 
    public OneToOneEncoder getEncoder() {
       return null;
    }
 
    public ChannelHandler getDecoder() {
       return null;
    }
 
 //   @Override
    public void start(Properties pEmbeddedCacheManager cacheManager) {
       Properties properties = p == null ? new Properties() : p;
       super.start(propertiescacheManager, 8181);
    }
 
    @Override
    public void startTransport(int idleTimeoutboolean tcpNoDelayint sendBufSizeint recvBufSizeTypedProperties typedProps) {
       InetSocketAddress address = new InetSocketAddress(getHost(), getPort());
       Executor masterExecutor = Executors.newCachedThreadPool();
       Executor workerExecutor = Executors.newCachedThreadPool();
 
       NioServerSocketChannelFactory factory = new NioServerSocketChannelFactory(masterExecutorworkerExecutorworkerThreads());
 
       // Configure the server.
       ServerBootstrap bootstrap = new ServerBootstrap(factory);
 
       // Set up the event pipeline factory.
      // Bind and start to accept incoming connections.
      bootstrap.setOption("child.tcpNoDelay"tcpNoDelay);
      if (sendBufSize > 0) bootstrap.setOption("child.sendBufferSize"sendBufSize);
      if (recvBufSize > 0) bootstrap.setOption("child.receiveBufferSize"recvBufSize);
      bootstrap.bind(address);
   }
   public void stop() {
      if ( != null.close();
   }
   private static class WebSocketServerPipelineFactory implements ChannelPipelineFactory {
      private CacheContainer cacheContainer;
      private Map<StringOpHandleroperationHandlers;
      private Map<StringCachestartedCaches = ConcurrentMapFactory.makeConcurrentMap();
      public WebSocketServerPipelineFactory(CacheContainer cacheContainer) {
         this. = cacheContainer;
          = new HashMap<StringOpHandler>();
         .put("put"new PutHandler());
         .put("get"new GetHandler());
         .put("remove"new RemoveHandler());
         NotifyHandler notifyHandler = new NotifyHandler();
         .put("notify"notifyHandler);
         .put("unnotify"notifyHandler);
      }
      @Override
      public ChannelPipeline getPipeline() throws Exception {
         // Create a default pipeline implementation.
         ChannelPipeline pipeline = Channels.pipeline();
         pipeline.addLast("decoder"new HttpRequestDecoder());
         pipeline.addLast("aggregator"new HttpChunkAggregator(65536));
         pipeline.addLast("encoder"new HttpResponseEncoder());
         pipeline.addLast("handler"new WebSocketServerHandler());
         return pipeline;
      }
   }
   public static String getJavascript() {
      if ( != null) {
         return ;
      }
      try {
         StringWriter writer = new StringWriter();
         String line = scriptReader.readLine();
         while (line != null) {
            writer.write(line);
            writer.write('\n');
            line = scriptReader.readLine();
         }
          = writer.toString();
         return ;
      } catch (IOException e) {
         throw new IllegalStateException("Unexpected exception while sending Websockets script to client."e);
      } finally {
         try {
            scriptReader.close();
         } catch (IOException e) {
            throw new IllegalStateException("Unexpected exception while closing Websockets script to client."e);
         }
      }
   }
New to GrepCode? Check out our FAQ X