tdlib-session-container/src/main/java/it/tdlight/tdlibsession/td/middle/ExecuteObject.java
Andrea Cavalli 1b2fc7e4c1 Bugfixes
2021-01-26 16:29:45 +01:00

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();
}
}