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

top.yqingyu.trans$client.main.LoginThread Maven / Gradle / Ivy

There is a newer version: 1.9.7
Show newest version
/*
package top.yqingyu.trans$client.main;

import top.yqingyu.common.qydata.DataMap;
import top.yqingyu.common.qymsg.DataType;
import top.yqingyu.common.qymsg.MsgTransfer;
import top.yqingyu.common.qymsg.MsgType;
import top.yqingyu.common.qymsg.QyMsg;
import top.yqingyu.trans$client.exception.LoginFailureException;

import java.net.Socket;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;

*/
/**
 * @author YYJ
 * @version 1.0.0
 * @date 2022/4/23 19:27
 * @description
 * @modified by
 *//*

public class LoginThread implements Callable {


    private DataMap loginData;
    private TransClient client;

    LoginThread(DataMap loginData) {
        this.loginData = loginData;
    }

    public LoginThread() {
    }

    public static QyMsg login(TransClient client) throws Exception {
        return login(new DataMap(), client);
    }

    public static QyMsg login(DataMap data, TransClient client) throws Exception {
        LoginThread th = new LoginThread(data);
        th.client = client;
        FutureTask futureTask = new FutureTask<>(th);
        new Thread(futureTask).start();
        try {
            return futureTask.get(client.clientConf.LOGIN_TIMEOUT, TimeUnit.MILLISECONDS);
        } catch (Exception e) {
            throw new LoginFailureException("登陆失败", e);
        }
    }

    @Override
    public QyMsg call() throws Exception {
        try {
            client.readMsgLock.lock();
            client.socket[0] = new Socket(
                    loginData.getString("HOST", client.clientConf.HOST),
                    loginData.getIntValue("PORT", client.clientConf.PORT)
            );

            QyMsg header = new QyMsg(MsgType.AC, DataType.JSON);

            header.setFrom(loginData.getString("CLIENT_USER_ID", client.clientConf.CLIENT_USER_ID));
            header
                    .putMsgData("AC_STR", loginData.getString("AC_STR", client.clientConf.AC_STR))
                    .putMsgData("LAN_Address", client.socket[0].getLocalAddress().getHostAddress())
                    .putMsgData("LOGIN_DATA", loginData);
            MsgTransfer.writeQyMsg(client.socket[0], header);
            return MsgTransfer.readQyMsg(client.socket[0], client.Main_PartitionMsgQueue, client.running);
        } finally {
            client.readMsgLock.unlock();
        }

    }
}
*/




© 2015 - 2024 Weber Informatics LLC | Privacy Policy