82 lines
1.8 KiB
Java
82 lines
1.8 KiB
Java
package it.tdlight.tdlibsession.td.middle;
|
|
|
|
import io.vertx.core.buffer.Buffer;
|
|
import it.tdlight.jni.TdApi;
|
|
import it.tdlight.jni.TdApi.Function;
|
|
import java.util.Objects;
|
|
import java.util.StringJoiner;
|
|
|
|
public class ExecuteObject {
|
|
|
|
private static final TdExecuteObjectMessageCodec realCodec = new TdExecuteObjectMessageCodec();
|
|
|
|
private boolean executeDirectly;
|
|
private TdApi.Function request;
|
|
private int pos;
|
|
private Buffer buffer;
|
|
|
|
public ExecuteObject(boolean executeDirectly, Function request) {
|
|
this.executeDirectly = executeDirectly;
|
|
this.request = request;
|
|
if (request == null) throw new NullPointerException();
|
|
}
|
|
|
|
public ExecuteObject(int pos, Buffer buffer) {
|
|
this.pos = pos;
|
|
this.buffer = buffer;
|
|
}
|
|
|
|
private void tryDecode() {
|
|
if (request == null) {
|
|
var data = realCodec.decodeFromWire(pos, buffer);
|
|
this.executeDirectly = data.executeDirectly;
|
|
this.request = data.request;
|
|
this.buffer = null;
|
|
}
|
|
}
|
|
|
|
public boolean isExecuteDirectly() {
|
|
tryDecode();
|
|
return executeDirectly;
|
|
}
|
|
|
|
public TdApi.Function getRequest() {
|
|
tryDecode();
|
|
return request;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
tryDecode();
|
|
if (this == o) {
|
|
return true;
|
|
}
|
|
if (o == null || getClass() != o.getClass()) {
|
|
return false;
|
|
}
|
|
|
|
ExecuteObject that = (ExecuteObject) o;
|
|
|
|
if (executeDirectly != that.executeDirectly) {
|
|
return false;
|
|
}
|
|
return Objects.equals(request, that.request);
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
tryDecode();
|
|
int result = (executeDirectly ? 1 : 0);
|
|
result = 31 * result + (request != null ? request.hashCode() : 0);
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return new StringJoiner(", ", ExecuteObject.class.getSimpleName() + "[", "]")
|
|
.add("executeDirectly=" + executeDirectly)
|
|
.add("request=" + request)
|
|
.toString();
|
|
}
|
|
}
|