1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.websocket.jsr356;
20
21 import java.net.URI;
22 import java.util.concurrent.atomic.AtomicLong;
23
24 import org.eclipse.jetty.websocket.common.LogicalConnection;
25 import org.eclipse.jetty.websocket.common.SessionFactory;
26 import org.eclipse.jetty.websocket.common.SessionListener;
27 import org.eclipse.jetty.websocket.common.WebSocketSession;
28 import org.eclipse.jetty.websocket.common.events.EventDriver;
29 import org.eclipse.jetty.websocket.jsr356.endpoints.AbstractJsrEventDriver;
30
31 public class JsrSessionFactory implements SessionFactory
32 {
33 private AtomicLong idgen = new AtomicLong(0);
34 private final ClientContainer container;
35 private final SessionListener[] listeners;
36
37 public JsrSessionFactory(ClientContainer container, SessionListener... sessionListeners)
38 {
39 this.container = container;
40 this.listeners = sessionListeners;
41 }
42
43 @Override
44 public WebSocketSession createSession(URI requestURI, EventDriver websocket, LogicalConnection connection)
45 {
46 return new JsrSession(container,getNextId(),requestURI,websocket,connection,listeners);
47 }
48
49 public String getNextId()
50 {
51 return String.format("websocket-%d",idgen.incrementAndGet());
52 }
53
54 @Override
55 public boolean supports(EventDriver websocket)
56 {
57 return (websocket instanceof AbstractJsrEventDriver);
58 }
59 }