Skip to content

Commit

Permalink
Remove duplicate code in WebSocketImpl and WebSocketImplBase
Browse files Browse the repository at this point in the history
  • Loading branch information
vietj committed Feb 20, 2017
1 parent 51264a7 commit e04d313
Show file tree
Hide file tree
Showing 3 changed files with 155 additions and 304 deletions.
144 changes: 2 additions & 142 deletions src/main/java/io/vertx/core/http/impl/ServerWebSocketImpl.java
Expand Up @@ -16,11 +16,8 @@

package io.vertx.core.http.impl;

import io.vertx.core.Handler;
import io.vertx.core.MultiMap;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.ServerWebSocket;
import io.vertx.core.http.WebSocketBase;
import io.vertx.core.http.WebSocketFrame;
import io.vertx.core.impl.VertxInternal;
import io.vertx.core.net.impl.ConnectionBase;
Expand All @@ -37,14 +34,13 @@
* @author <a href="http://tfox.org">Tim Fox</a>
*
*/
public class ServerWebSocketImpl extends WebSocketImplBase implements ServerWebSocket {
public class ServerWebSocketImpl extends WebSocketImplBase<ServerWebSocket> implements ServerWebSocket {

private final String uri;
private final String path;
private final String query;
private final Runnable connectRunnable;
private final MultiMap headers;
private Object metric;

private boolean connected;
private boolean rejected;
Expand Down Expand Up @@ -99,11 +95,6 @@ public X509Certificate[] peerCertificateChain() throws SSLPeerUnverifiedExceptio
return conn.getPeerCertificateChain();
}

@Override
public void end() {
close();
}

@Override
public void close() {
synchronized (conn) {
Expand All @@ -121,100 +112,6 @@ public void close() {
}
}

@Override
public ServerWebSocket handler(Handler<Buffer> handler) {
synchronized (conn) {
checkClosed();
this.dataHandler = handler;
return this;
}
}

@Override
public ServerWebSocket endHandler(Handler<Void> handler) {
synchronized (conn) {
checkClosed();
this.endHandler = handler;
return this;
}
}

@Override
public ServerWebSocket exceptionHandler(Handler<Throwable> handler) {
synchronized (conn) {
checkClosed();
this.exceptionHandler = handler;
return this;
}
}

@Override
public ServerWebSocket closeHandler(Handler<Void> handler) {
synchronized (conn) {
checkClosed();
this.closeHandler = handler;
return this;
}
}

@Override
public ServerWebSocketImpl frameHandler(Handler<WebSocketFrame> handler) {
return (ServerWebSocketImpl) super.frameHandler(handler);
}

@Override
public ServerWebSocket pause() {
synchronized (conn) {
checkClosed();
conn.doPause();
return this;
}
}

@Override
public ServerWebSocket resume() {
synchronized (conn) {
checkClosed();
conn.doResume();
return this;
}
}

@Override
public ServerWebSocket setWriteQueueMaxSize(int maxSize) {
synchronized (conn) {
checkClosed();
conn.doSetWriteQueueMaxSize(maxSize);
return this;
}
}

@Override
public boolean writeQueueFull() {
synchronized (conn) {
checkClosed();
return conn.isNotWritable();
}
}

@Override
public ServerWebSocket write(Buffer data) {
synchronized (conn) {
checkClosed();
writeFrame(WebSocketFrame.binaryFrame(data, true));
return this;
}
}

@Override
public ServerWebSocket drainHandler(Handler<Void> handler) {
synchronized (conn) {
checkClosed();
this.drainHandler = handler;
return this;
}
}

@Override
public ServerWebSocket writeFrame(WebSocketFrame frame) {
synchronized (conn) {
Expand All @@ -226,36 +123,7 @@ public ServerWebSocket writeFrame(WebSocketFrame frame) {
connect();
}
}
super.writeFrameInternal(frame);
return this;
}
}

@Override
public ServerWebSocket writeFinalTextFrame(String text) {
return writeFrame(WebSocketFrame.textFrame(text, true));
}

@Override
public ServerWebSocket writeFinalBinaryFrame(Buffer data) {
return writeFrame(WebSocketFrame.binaryFrame(data, true));
}

@Override
public ServerWebSocket writeBinaryMessage(Buffer data) {
synchronized (conn) {
checkClosed();
writeMessageInternal(data);
return this;
}
}

@Override
public ServerWebSocket writeTextMessage(String text) {
synchronized (conn) {
checkClosed();
writeTextMessageInternal(text);
return this;
return super.writeFrame(frame);
}
}

Expand All @@ -278,12 +146,4 @@ boolean isRejected() {
return rejected;
}
}

void setMetric(Object metric) {
this.metric = metric;
}

Object getMetric() {
return metric;
}
}
138 changes: 2 additions & 136 deletions src/main/java/io/vertx/core/http/impl/WebSocketImpl.java
Expand Up @@ -16,8 +16,6 @@

package io.vertx.core.http.impl;

import io.vertx.core.Handler;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.WebSocket;
import io.vertx.core.http.WebSocketFrame;
import io.vertx.core.impl.VertxInternal;
Expand All @@ -31,151 +29,19 @@
* @author <a href="http://tfox.org">Tim Fox</a>
*
*/
public class WebSocketImpl extends WebSocketImplBase implements WebSocket {

private Object metric;
public class WebSocketImpl extends WebSocketImplBase<WebSocket> implements WebSocket {

public WebSocketImpl(VertxInternal vertx,
ClientConnection conn, boolean supportsContinuation,
int maxWebSocketFrameSize, int maxWebSocketMessageSize) {
super(vertx, conn, supportsContinuation, maxWebSocketFrameSize, maxWebSocketMessageSize);
}

@Override
public WebSocketImpl frameHandler(Handler<WebSocketFrame> handler) {
return (WebSocketImpl) super.frameHandler(handler);
}

@Override
public WebSocket handler(Handler<Buffer> handler) {
synchronized (conn) {
if (handler != null) {
checkClosed();
}
this.dataHandler = handler;
return this;
}
}

@Override
public WebSocket endHandler(Handler<Void> handler) {
synchronized (conn) {
if (handler != null) {
checkClosed();
}
this.endHandler = handler;
return this;
}
}

@Override
public WebSocket exceptionHandler(Handler<Throwable> handler) {
synchronized (conn) {
if (handler != null) {
checkClosed();
}
this.exceptionHandler = handler;
return this;
}
}

@Override
public WebSocket writeFrame(WebSocketFrame frame) {
writeFrameInternal(frame);
return this;
}

@Override
public WebSocket writeFinalTextFrame(String text) {
return writeFrame(WebSocketFrame.textFrame(text, true));
}

@Override
public WebSocket writeFinalBinaryFrame(Buffer data) {
return writeFrame(WebSocketFrame.binaryFrame(data, true));
}

@Override
public WebSocket writeBinaryMessage(Buffer data) {
writeMessageInternal(data);
return this;
}

@Override
public WebSocket writeTextMessage(String text) {
writeTextMessageInternal(text);
return this;
}


@Override
public WebSocket closeHandler(Handler<Void> handler) {
synchronized (conn) {
checkClosed();
this.closeHandler = handler;
return this;
}
}

@Override
public WebSocket pause() {
synchronized (conn) {
checkClosed();
conn.doPause();
return this;
}
}

@Override
public WebSocket resume() {
synchronized (conn) {
checkClosed();
conn.doResume();
return this;
}
}

@Override
public WebSocket setWriteQueueMaxSize(int maxSize) {
synchronized (conn) {
checkClosed();
conn.doSetWriteQueueMaxSize(maxSize);
return this;
}
}

@Override
public WebSocket write(Buffer data) {
writeFrame(WebSocketFrame.binaryFrame(data, true));
return this;
}

@Override
public WebSocket drainHandler(Handler<Void> handler) {
synchronized (conn) {
checkClosed();
this.drainHandler = handler;
return this;
}
}

@Override
void handleClosed() {
synchronized (conn) {
((ClientConnection) conn).metrics().disconnected(metric);
((ClientConnection) conn).metrics().disconnected(getMetric());
super.handleClosed();
}
}

void setMetric(Object metric) {
synchronized (conn) {
this.metric = metric;
}
}

@Override
public void end() {
close();
}

}

0 comments on commit e04d313

Please sign in to comment.