All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ursful.framework.mina.server.client.Client Maven / Gradle / Ivy

There is a newer version: 3.0.12
Show newest version
package com.ursful.framework.mina.server.client;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ScheduledFuture;

import javax.script.ScriptEngine;

import com.ursful.framework.mina.common.packet.Packet;
import com.ursful.framework.mina.common.tools.AesOfb;
import org.apache.mina.core.session.IoSession;

import com.ursful.framework.mina.server.tools.PacketCreator;
import com.ursful.framework.mina.server.tools.TimerManager;

public class Client {
    public static final String CLIENT_ID_KEY = "CLIENT_ID";
    public static final String CLIENT_KEY = "CLIENT";
    private AesOfb send;
    private AesOfb receive;
    private IoSession session;
    private ClientUser user;
    private boolean loggedIn = false;
    private String accountName;
    private int world;
    private long lastPong;
    private boolean hasPacketLog = false;
    private Set macs = new HashSet();
    private Map engines = new HashMap();
    private ScheduledFuture idleTask = null;
    private int lastActionId = 0;
    public int packetnum = 0;

    private boolean isServer;

    public boolean isServer() {
        return isServer;
    }

    public void setIsServer(boolean isServer) {
        this.isServer = isServer;
    }

    private Map metaData;

    public Map getMetaData() {
        return metaData;
    }

    public void setMetaData(Map metaData) {
        this.metaData = metaData;
    }

    private String parentId;// server id

    public String getParentId() {
        return parentId;
    }

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    private String serverId;//cluser server id;

    public void write(Packet packet){
        if (session != null) {
            session.write(packet);
        }
//        ClientUser user = getUser();
//        Client c = RouteManager.getServer(user.getCid());
//        if(c != null){
//            c.write(packet);
//        }else {
//            if (session != null) {
//                session.write(packet);
//            }
//        }
    }

    public String getServerId() {
        return serverId;
    }

    public void setServerId(String serverId) {
        this.serverId = serverId;
    }

    private boolean useCryptor = true;

    public boolean isUseCryptor() {
        return useCryptor;
    }

    public void setUseCryptor(boolean useCryptor) {
        this.useCryptor = useCryptor;
    }

    public Client(IoSession session) {
        this.session = session;
    }

    public Client(AesOfb send, AesOfb receive, IoSession session) {
        this.send = send;
        this.receive = receive;
        this.session = session;
    }

    public synchronized AesOfb getReceiveCrypto() {
        return receive;
    }

    public synchronized AesOfb getSendCrypto() {
        return send;
    }

    public synchronized IoSession getSession() {
        return session;
    }


    public ClientUser getUser() {
        return user;
    }

    public void setUser(ClientUser user) {
        this.user = user;
    }

    public boolean isLoggedIn() {
        return loggedIn;
    }

 
    public int finishLogin(boolean success) {
        return 0;
    }

    public int login(String login, String pwd, boolean ipMacBanned) {
        return 1;
    }


 
    public void disconnect() { }

    public String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }


    public int getWorld() {
        return world;
    }

    public void setWorld(int world) {
        this.world = world;
    }

    public void pongReceived() {
        lastPong = System.currentTimeMillis();
    }

    public void sendPing() {
        final long then = System.currentTimeMillis();
        getSession().write(PacketCreator.getPing());
        TimerManager.getInstance().schedule(new Runnable() {
            @Override
            public void run() {
                try {
                    if (lastPong - then < 0) {
                        if (getSession().isConnected()) {
                            getSession().closeOnFlush();
                        }
                    }
                } catch (Exception e) {
                }
            }
        }, 15000); // note: idletime gets added to this too
    }
 



    public Set getMacs() {
        return Collections.unmodifiableSet(macs);
    }

    public void setScriptEngine(String name, ScriptEngine e) {
        engines.put(name, e);
    }

    public ScriptEngine getScriptEngine(String name) {
        return engines.get(name);
    }

    public void removeScriptEngine(String name) {
        engines.remove(name);
    }

    public ScheduledFuture getIdleTask() {
        return idleTask;
    }

    public void setIdleTask(ScheduledFuture idleTask) {
        this.idleTask = idleTask;
    }

     

     
    public boolean hasPacketLog() {
        return this.hasPacketLog;
    }
    FileOutputStream pL_fos = null;
    OutputStreamWriter pL_osw = null;


    public int getLastActionId() {
        return lastActionId;
    }

    public void setLastActionId(int actionId) {
        this.lastActionId = actionId;
    }
 
    public void changeChannel(int channel) { }

    @Override
    public String toString() {
        return "Client{" +
                "user=" + user +
                ", isServer=" + isServer +
                '}';
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy