tdlib-session-container/src/main/java/it/tdlight/reactiveapi/ChannelCodec.java

48 lines
1.8 KiB
Java
Raw Normal View History

2022-06-27 00:06:53 +02:00
package it.tdlight.reactiveapi;
2022-10-05 02:26:30 +02:00
import java.lang.reflect.InvocationTargetException;
public class ChannelCodec {
public static final ChannelCodec CLIENT_BOUND_EVENT = new ChannelCodec(ClientBoundEventSerializer.class, ClientBoundEventDeserializer.class);
public static final ChannelCodec TDLIB_REQUEST = new ChannelCodec(TdlibRequestSerializer.class, TdlibRequestDeserializer.class);
public static final ChannelCodec TDLIB_RESPONSE = new ChannelCodec(TdlibResponseSerializer.class, TdlibResponseDeserializer.class);
public static final ChannelCodec UTF8_TEST = new ChannelCodec(UtfCodec.class, UtfCodec.class);
2022-06-27 00:06:53 +02:00
private final Class<?> serializerClass;
private final Class<?> deserializerClass;
2022-10-05 02:26:30 +02:00
public ChannelCodec(Class<?> serializerClass,
2022-06-27 00:06:53 +02:00
Class<?> deserializerClass) {
this.serializerClass = serializerClass;
this.deserializerClass = deserializerClass;
}
public Class<?> getSerializerClass() {
return serializerClass;
}
public Class<?> getDeserializerClass() {
return deserializerClass;
}
2022-10-05 02:26:30 +02:00
public <K> Deserializer<K> getNewDeserializer() {
try {
//noinspection unchecked
return (Deserializer<K>) deserializerClass.getDeclaredConstructor().newInstance();
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException |
ClassCastException e) {
throw new IllegalStateException("Can't instantiate the codec deserializer", e);
}
}
public <K> Serializer<K> getNewSerializer() {
try {
//noinspection unchecked
return (Serializer<K>) serializerClass.getDeclaredConstructor().newInstance();
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException |
ClassCastException e) {
throw new IllegalStateException("Can't instantiate the codec serializer", e);
}
2022-06-27 00:06:53 +02:00
}
}