промежуточный. кусок рефакторинга на тему борьбы с зависаниями. пока не внедрен
This commit is contained in:
@@ -39,7 +39,7 @@ public abstract class RepositoryClient {
|
||||
@Override
|
||||
protected void ServerAction() throws Exception {
|
||||
Command(new ServerExchangeUnit_2021(code_in, arg, object_in));
|
||||
target = response.object;
|
||||
target = server_response.object;
|
||||
}
|
||||
@Override
|
||||
protected boolean validate() {
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package _VisualDVM.Repository;
|
||||
import Common.Database.Database;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Passes.PassException;
|
||||
import Common.Utils.InterruptThread;
|
||||
import Common.Utils.Utils_;
|
||||
import _VisualDVM.Constants;
|
||||
import _VisualDVM.Global;
|
||||
import _VisualDVM.Passes.Server.RepositoryPass;
|
||||
import _VisualDVM.Repository.BugReport.BugReport;
|
||||
import _VisualDVM.Repository.Server.DiagnosticSignalHandler;
|
||||
import _VisualDVM.Repository.Server.ServerCode;
|
||||
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
|
||||
@@ -23,10 +26,7 @@ import javax.mail.internet.MimeMultipart;
|
||||
import java.io.*;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Properties;
|
||||
import java.util.Vector;
|
||||
import java.util.*;
|
||||
public abstract class RepositoryServer<D extends Database> {
|
||||
public final static String separator = "----------------------------------";
|
||||
protected static FileWriter Log;
|
||||
@@ -187,6 +187,7 @@ public abstract class RepositoryServer<D extends Database> {
|
||||
out = new ObjectOutputStream(clientSocket.getOutputStream());
|
||||
in = new ObjectInputStream(clientSocket.getInputStream());
|
||||
//->
|
||||
//todo убрать цикл. пусть читает лишь одну команду.было зависание как раз на чтении второй
|
||||
while (true) {
|
||||
DBObject dbObject = null;
|
||||
Pair<Class, Object> p = null;
|
||||
@@ -369,4 +370,37 @@ public abstract class RepositoryServer<D extends Database> {
|
||||
public void Ping() {
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
}
|
||||
//---команды со стороны клиента.
|
||||
public Object ClientRequest(ServerCode code_in, String arg_in, Serializable object_in, int delay) throws Exception {
|
||||
RepositoryPass pass = new RepositoryPass(this) {
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return code_in.toString();
|
||||
}
|
||||
@Override
|
||||
protected int getTimeout() {
|
||||
return delay;
|
||||
}
|
||||
@Override
|
||||
protected void ServerAction() throws Exception {
|
||||
Command(new ServerExchangeUnit_2021(code_in, arg_in,object_in));
|
||||
target = server_response.object;
|
||||
}
|
||||
@Override
|
||||
protected boolean validate() {
|
||||
return Log.isEmpty();
|
||||
}
|
||||
};
|
||||
if (pass.Do())
|
||||
return pass.target;
|
||||
throw new PassException(Utils_.Brackets(new Date().toString()) + " Ошибка взаимодействия с сервером " + code_in);
|
||||
}
|
||||
public Object ClientRequest(ServerCode code_in,String arg_in, Serializable object_in)throws Exception {
|
||||
return ClientRequest(code_in,arg_in,object_in, 120000);
|
||||
}
|
||||
//---
|
||||
public <T extends DBObject> T getActual(T object_in, Class<T> object_class)throws Exception{
|
||||
return (T) ClientRequest(ServerCode.GetObjectCopyByPK, "",
|
||||
new Pair<>(object_class, object_in.getPK()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user