1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.websocket.client.internal.io;
20
21 import java.util.concurrent.Executor;
22
23 import org.eclipse.jetty.io.EndPoint;
24 import org.eclipse.jetty.util.Callback;
25 import org.eclipse.jetty.websocket.client.WebSocketClientFactory;
26 import org.eclipse.jetty.websocket.client.internal.DefaultWebSocketClient;
27 import org.eclipse.jetty.websocket.client.masks.Masker;
28 import org.eclipse.jetty.websocket.core.io.AbstractWebSocketConnection;
29 import org.eclipse.jetty.websocket.core.protocol.WebSocketFrame;
30
31
32
33
34 public class WebSocketClientConnection extends AbstractWebSocketConnection
35 {
36 private final WebSocketClientFactory factory;
37 private final DefaultWebSocketClient client;
38 private final Masker masker;
39 private boolean connected;
40
41 public WebSocketClientConnection(EndPoint endp, Executor executor, DefaultWebSocketClient client)
42 {
43 super(endp,executor,client.getFactory().getScheduler(),client.getPolicy(),client.getFactory().getBufferPool());
44 this.client = client;
45 this.factory = client.getFactory();
46 this.connected = false;
47 this.masker = client.getMasker();
48 }
49
50 public DefaultWebSocketClient getClient()
51 {
52 return client;
53 }
54
55 @Override
56 public void onClose()
57 {
58 super.onClose();
59 factory.sessionClosed(getSession());
60 };
61
62 @Override
63 public void onOpen()
64 {
65 if (!connected)
66 {
67 factory.sessionOpened(getSession());
68 connected = true;
69 }
70 super.onOpen();
71 }
72
73 @Override
74 public <C> void output(C context, Callback<C> callback, WebSocketFrame frame)
75 {
76 masker.setMask(frame);
77 super.output(context,callback,frame);
78 }
79 }