top.yqingyu.trans$client.main.LoginThread Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of TransClient Show documentation
Show all versions of TransClient Show documentation
Qy's Client based on QyMsg transport protocol
/*
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();
}
}
}
*/