tdlib-session-container/src/main/java/it/tdlight/tdlibsession/td/middle/TdResultList.java

94 lines
2.0 KiB
Java
Raw Normal View History

package it.tdlight.tdlibsession.td.middle;
2021-01-26 16:29:45 +01:00
import io.vertx.core.buffer.Buffer;
import it.tdlight.jni.TdApi;
2021-01-24 04:21:47 +01:00
import it.tdlight.jni.TdApi.Error;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
public class TdResultList {
2021-01-26 16:29:45 +01:00
private static final TdResultListMessageCodec realCodec = new TdResultListMessageCodec();
private List<TdApi.Object> values;
private Error error;
private int pos;
private Buffer buffer;
2021-01-24 04:21:47 +01:00
public TdResultList(List<TdApi.Object> values) {
this.values = values;
2021-01-24 04:21:47 +01:00
this.error = null;
2021-01-26 16:29:45 +01:00
if (values == null) throw new NullPointerException("Null message");
}
2021-01-24 04:21:47 +01:00
public TdResultList(TdApi.Error error) {
this.values = null;
this.error = error;
2021-01-26 16:29:45 +01:00
if (error == null) throw new NullPointerException("Null message");
}
public TdResultList(int pos, Buffer buffer) {
this.pos = pos;
this.buffer = buffer;
}
private void tryDecode() {
if (error == null && values == null) {
var value = realCodec.decodeFromWire(pos, buffer);
this.values = value.values;
this.error = value.error;
this.buffer = null;
}
2021-01-24 04:21:47 +01:00
}
public List<TdApi.Object> value() {
2021-01-26 16:29:45 +01:00
tryDecode();
return values;
}
2021-01-24 04:21:47 +01:00
public TdApi.Error error() {
2021-01-26 16:29:45 +01:00
tryDecode();
2021-01-24 04:21:47 +01:00
return error;
}
public boolean succeeded() {
2021-01-26 16:29:45 +01:00
tryDecode();
2021-01-24 04:21:47 +01:00
return error == null && values != null;
}
@Override
public boolean equals(Object o) {
2021-01-26 16:29:45 +01:00
tryDecode();
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
TdResultList that = (TdResultList) o;
2021-01-24 04:21:47 +01:00
if (!Objects.equals(values, that.values)) {
return false;
}
return Objects.equals(error, that.error);
}
@Override
public int hashCode() {
2021-01-26 16:29:45 +01:00
tryDecode();
2021-01-24 04:21:47 +01:00
int result = values != null ? values.hashCode() : 0;
result = 31 * result + (error != null ? error.hashCode() : 0);
return result;
}
@Override
public String toString() {
2021-01-24 04:21:47 +01:00
return new StringJoiner(", ", TdResultList.class.getSimpleName() + "[", "]")
.add("values=" + values)
.add("error=" + error)
.toString();
}
}