1 package com.ericsson.research.transport.ws.spi;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 import java.io.IOException;
37
38 import com.ericsson.research.transport.ws.WSException;
39 import com.ericsson.research.transport.ws.WSSecurityContext;
40 import com.ericsson.research.transport.ws.WSURI;
41
42 public class WSHybi10 extends WSHixie76 {
43
44 public WSHybi10(WSURI uri, WSSecurityContext securityContext) {
45 super(uri, securityContext);
46 }
47
48 public WSHybi10(WSSecurityContext securityContext) {
49 super(securityContext);
50 }
51
52 protected WSAbstractHandshake getHandshake() {
53 if(handshake == null)
54 handshake = new WSHybi10Handshake(this);
55 return handshake;
56 }
57
58 public void send(byte[] data) throws IOException {
59 new WSHybiFrame(WSHybiFrame.BINARY_FRAME, data, client).serialize(getRawOutput());
60 }
61
62 public void send(String utf8String) throws IOException {
63 new WSHybiFrame(WSHybiFrame.TEXT_FRAME, utf8String.getBytes(UTF_8), client).serialize(getRawOutput());
64 }
65
66 public void ping(byte[] payload) throws IOException {
67 if(state != OPEN)
68 throw new IOException(ILLEGAL_STATE+" "+getState());
69 new WSHybiFrame(WSHybiFrame.PING_FRAME, payload, client).serialize(getRawOutput());
70 }
71
72 protected void pong(byte[] payload) throws IOException {
73 if(state != OPEN)
74 throw new IOException(ILLEGAL_STATE+" "+getState());
75 new WSHybiFrame(WSHybiFrame.PONG_FRAME, payload, client).serialize(getRawOutput());
76 }
77
78 protected void internalClose() throws IOException {
79 new WSHybiFrame(WSHybiFrame.CLOSE_FRAME, empty, client).serialize(getRawOutput());
80 }
81
82 protected WSAbstractFrame createEmptyFrame() {
83 return new WSHybiFrame();
84 }
85
86 protected void dispatchFrame(WSAbstractFrame frame) throws IOException, WSException {
87 switch (frame.getType()) {
88 case WSHybiFrame.PING_FRAME:
89 pong(frame.getPayload());
90 break;
91 case WSHybiFrame.PONG_FRAME:
92 wrapper.notifyPong(frame.getPayload());
93 break;
94 default:
95 super.dispatchFrame(frame);
96 }
97 }
98
99 public String toString() {
100 return "Hybi-10";
101 }
102
103 }