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 import java.io.OutputStream;
38
39 import com.ericsson.research.transport.ws.WSInterface;
40 import com.ericsson.research.transport.ws.WSListener;
41
42 public abstract class WSAbstractProtocolWrapper implements WSInterface, WSListener {
43
44 protected WSAbstractProtocol protocol;
45 protected WSListener listener;
46
47 WSAbstractProtocolWrapper() {}
48
49 public WSAbstractProtocolWrapper(WSAbstractProtocol protocol, WSListener listener) {
50 this.setProtocol(protocol);
51 this.listener = listener;
52 }
53
54 public WSAbstractProtocol getProtocol() {
55 return this.protocol;
56 }
57
58 protected void setProtocol(WSAbstractProtocol protocol) {
59 if(this.protocol == protocol)
60 return;
61 if(this.protocol != null)
62 this.protocol.setWrapper(null);
63 this.protocol = protocol;
64 if(this.protocol != null)
65 protocol.setWrapper(this);
66 }
67
68 public abstract void forceClose();
69 public abstract OutputStream getRawOutput() throws IOException;
70
71 public void setReadListener(WSListener listener) {
72 this.listener = listener;
73 }
74
75 public void open() throws IOException {
76 this.notifyConnected();
77 }
78
79 public void send(byte[] binaryData) throws IOException {
80 this.protocol.send(binaryData);
81 }
82
83 public void send(String utf8String) throws IOException {
84 this.protocol.send(utf8String);
85 }
86
87 public void ping(byte[] payload) throws IOException {
88 this.protocol.ping(payload);
89 }
90
91 public void close() {
92 this.protocol.close();
93 }
94
95 public void notifyOpen(WSInterface socket) {
96 if(this.listener != null)
97 this.listener.notifyOpen(socket);
98 }
99
100 public void notifyMessage(String utf8String) {
101 if(this.listener != null)
102 this.listener.notifyMessage(utf8String);
103 }
104
105 public void notifyMessage(byte[] data) {
106 if(this.listener != null)
107 this.listener.notifyMessage(data);
108 }
109
110 public void notifyPong(byte[] payload) {
111 if(this.listener != null)
112 this.listener.notifyPong(payload);
113 }
114
115 public void notifyClose() {
116 if(this.listener != null)
117 this.listener.notifyClose();
118 }
119
120 public void notifyError(Throwable t) {
121 if(this.listener != null)
122 this.listener.notifyError(t);
123 this.forceClose();
124 }
125
126 public void notifyConnected() {
127 this.protocol.notifyConnected();
128 }
129
130 public void notifyDisconnected() {
131 this.protocol.notifyDisconnected();
132 }
133
134 public void notifySocketData(byte[] data, int length) {
135 this.protocol.notifySocketData(data, length);
136 }
137
138 public void notifyError(Exception e) {
139 if(this.listener != null)
140 this.listener.notifyError(e);
141 this.forceClose();
142 }
143
144 }