NekoX/TMessagesProj/src/main/java/org/telegram/tgnet/TLClassStore.java

69 lines
3.1 KiB
Java
Raw Normal View History

2013-10-25 17:19:00 +02:00
/*
2019-01-23 18:03:33 +01:00
* This is the source code of Telegram for Android v. 5.x.x.
2013-10-25 17:19:00 +02:00
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
2019-01-23 18:03:33 +01:00
* Copyright Nikolai Kudashov, 2013-2018.
2013-10-25 17:19:00 +02:00
*/
2015-09-24 22:52:02 +02:00
package org.telegram.tgnet;
2018-07-30 04:07:02 +02:00
import android.util.SparseArray;
2013-10-25 17:19:00 +02:00
2018-07-30 04:07:02 +02:00
import org.telegram.messenger.FileLog;
2013-10-25 17:19:00 +02:00
public class TLClassStore {
2018-07-30 04:07:02 +02:00
private SparseArray<Class> classStore;
2013-10-25 17:19:00 +02:00
2015-05-21 23:27:27 +02:00
public TLClassStore() {
2018-07-30 04:07:02 +02:00
classStore = new SparseArray<>();
2013-10-25 17:19:00 +02:00
classStore.put(TLRPC.TL_error.constructor, TLRPC.TL_error.class);
classStore.put(TLRPC.TL_decryptedMessageService.constructor, TLRPC.TL_decryptedMessageService.class);
classStore.put(TLRPC.TL_decryptedMessage.constructor, TLRPC.TL_decryptedMessage.class);
2013-12-26 12:43:37 +01:00
classStore.put(TLRPC.TL_decryptedMessageLayer.constructor, TLRPC.TL_decryptedMessageLayer.class);
2016-03-06 02:49:31 +01:00
classStore.put(TLRPC.TL_decryptedMessage_layer17.constructor, TLRPC.TL_decryptedMessage.class);
2017-12-08 18:35:59 +01:00
classStore.put(TLRPC.TL_decryptedMessage_layer45.constructor, TLRPC.TL_decryptedMessage_layer45.class);
2016-03-06 02:49:31 +01:00
classStore.put(TLRPC.TL_decryptedMessageService_layer8.constructor, TLRPC.TL_decryptedMessageService_layer8.class);
classStore.put(TLRPC.TL_decryptedMessage_layer8.constructor, TLRPC.TL_decryptedMessage_layer8.class);
classStore.put(TLRPC.TL_message_secret.constructor, TLRPC.TL_message_secret.class);
2017-12-08 18:35:59 +01:00
classStore.put(TLRPC.TL_message_secret_layer72.constructor, TLRPC.TL_message_secret_layer72.class);
2016-03-06 02:49:31 +01:00
classStore.put(TLRPC.TL_message_secret_old.constructor, TLRPC.TL_message_secret_old.class);
2014-10-22 22:01:07 +02:00
classStore.put(TLRPC.TL_messageEncryptedAction.constructor, TLRPC.TL_messageEncryptedAction.class);
classStore.put(TLRPC.TL_null.constructor, TLRPC.TL_null.class);
2015-09-24 22:52:02 +02:00
classStore.put(TLRPC.TL_updateShortChatMessage.constructor, TLRPC.TL_updateShortChatMessage.class);
classStore.put(TLRPC.TL_updates.constructor, TLRPC.TL_updates.class);
classStore.put(TLRPC.TL_updateShortMessage.constructor, TLRPC.TL_updateShortMessage.class);
classStore.put(TLRPC.TL_updateShort.constructor, TLRPC.TL_updateShort.class);
classStore.put(TLRPC.TL_updatesCombined.constructor, TLRPC.TL_updatesCombined.class);
classStore.put(TLRPC.TL_updateShortSentMessage.constructor, TLRPC.TL_updateShortSentMessage.class);
classStore.put(TLRPC.TL_updatesTooLong.constructor, TLRPC.TL_updatesTooLong.class);
2013-10-25 17:19:00 +02:00
}
static TLClassStore store = null;
public static TLClassStore Instance() {
if (store == null) {
store = new TLClassStore();
}
return store;
}
2015-09-24 22:52:02 +02:00
public TLObject TLdeserialize(NativeByteBuffer stream, int constructor, boolean exception) {
2013-10-25 17:19:00 +02:00
Class objClass = classStore.get(constructor);
if (objClass != null) {
2015-05-21 23:27:27 +02:00
TLObject response;
2013-10-25 17:19:00 +02:00
try {
2015-05-21 23:27:27 +02:00
response = (TLObject) objClass.newInstance();
} catch (Throwable e) {
2017-03-31 01:58:05 +02:00
FileLog.e(e);
2013-10-25 17:19:00 +02:00
return null;
}
2015-05-21 23:27:27 +02:00
response.readParams(stream, exception);
return response;
2013-10-25 17:19:00 +02:00
}
2015-05-21 23:27:27 +02:00
return null;
2013-10-25 17:19:00 +02:00
}
}