Skip to content

Instantly share code, notes, and snippets.

@volgar1x
Last active August 29, 2015 13:57
Show Gist options
  • Save volgar1x/9450243 to your computer and use it in GitHub Desktop.
Save volgar1x/9450243 to your computer and use it in GitHub Desktop.
package org.heat.login.network;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import net.engio.mbassy.bus.MBassador;
import net.engio.mbassy.listener.Listener;
import net.engio.mbassy.listener.References;
import org.heat.login.network.netty.NettyLoginClient;
import org.heat.protocol.MessageReceiver;
import org.heat.protocol.messages.HelloConnectMessage;
import org.heat.protocol.messages.IdentificationMessage;
import org.heat.protocol.messages.ProtocolRequired;
import org.heat.protocol.messages.RawDataMessage;
import org.heat.protocol.netty.DofusDecoder;
import org.heat.protocol.netty.DofusEncoder;
import org.rocket.ServiceHandle;
import org.rocket.network.NetworkService;
import org.rocket.network.event.Connect;
import org.rocket.network.event.Receive;
import org.rocket.network.event.mbassador.RocketBusConfiguration;
import org.rocket.network.netty.NettyService;
import java.net.InetSocketAddress;
@Listener(references = References.Strong)
public final class NettyLoginService {
public static void main(String[] args) {
NetworkService<? extends LoginClient> login = new NettyService<>(
NettyLoginClient::new,
new MBassador<>(RocketBusConfiguration.Default()),
ch -> {
ch.pipeline().addLast("frameEncoder", new DofusEncoder());
ch.pipeline().addLast("frameDecoder", new DofusDecoder(MessageReceiver.getInstance()));
ch.pipeline().addLast("logging", new LoggingHandler(NettyLoginService.class, LogLevel.DEBUG));
},
new InetSocketAddress(5555));
login.getEventBus().subscribe(new NettyLoginService());
try (ServiceHandle h = login.createHandle(null)) {
h.start();
jdk.nashorn.tools.Shell.main(new String[0]);
}
}
@Connect
public void onConnect(LoginClient client) {
client.transaction(tx -> {
tx.write(new ProtocolRequired());
tx.write(new HelloConnectMessage());
}).now();
}
@Receive
public void identify(LoginClient client, IdentificationMessage msg) {
client.write(new RawDataMessage()).now();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment