Package com.epsilon5.client.network

Source Code of com.epsilon5.client.network.MessageSender

package com.epsilon5.client.network;

import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Singleton;
import com.epsilon5.client.settings.PlayerSettings;
import org.jboss.netty.channel.Channel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Singleton
public class MessageSender {

    private final Logger logger = LoggerFactory.getLogger(MessageSender.class);

    private final Injector injector;
    private Channel channel;

    private int packetNumber;

    @Inject
    private MessageSender(Injector injector) {
        this.injector = injector;
    }

    public void setChannel(Channel channel) {
        this.channel = channel;
    }

    public void sendAuth() {
        final PlayerSettings settings = injector.getInstance(PlayerSettings.class);

        final Protocol.Auth message = Protocol.Auth.newBuilder()
                .setName(settings.getName())
                .setPassword(settings.getPassword())
                .build();

        logger.trace("Auth message is sent, {}", message);
        channel.write(message);
    }

    public void sendControl(Protocol.Control.Builder builder) {
        if (channel != null) {
            builder.setPacketNumber(++packetNumber);

            final Protocol.Control message = builder.build();
            logger.trace("Control message is sent, {}", message);
            channel.write(message);
        } else {
            logger.trace("Control message isn't sent");
        }
    }

}
TOP

Related Classes of com.epsilon5.client.network.MessageSender

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.