package com.mastfrog.acteur.server;
import com.mastfrog.acteur.Event;
import com.mastfrog.util.Codec;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufInputStream;
import io.netty.channel.Channel;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import java.io.IOException;
import java.net.SocketAddress;
/**
*
* @author Tim Boudreau
*/
final class WebSocketEvent implements Event<WebSocketFrame> {
private final WebSocketFrame frame;
private final Channel channel;
private final SocketAddress addr;
private final Codec mapper;
public WebSocketEvent(WebSocketFrame frame, Channel channel, SocketAddress addr, Codec mapper) {
this.frame = frame;
this.channel = channel;
this.addr = addr;
this.mapper = mapper;
}
@Override
public Channel getChannel() {
return channel;
}
@Override
public WebSocketFrame getRequest() {
return frame;
}
@Override
public SocketAddress getRemoteAddress() {
return addr;
}
@Override
public <T> T getContentAsJSON(Class<T> type) throws IOException {
return mapper.readValue(new ByteBufInputStream(frame.content()), type);
}
@Override
public ByteBuf getContent() throws IOException {
return frame.content();
}
}