From f38fe387a667986292c9001665df6c60d4c5c1d5 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 13 Oct 2020 02:02:24 +0200 Subject: [PATCH] Rename implementation and improve README --- README.md | 51 ++++++++++++++----- .../java/it/tdlight/common/CommonClient.java | 38 -------------- .../tdlight/common/CommonClientManager.java | 37 ++++++++++++++ .../tdlight/common/InternalClientManager.java | 6 +++ src/main/java/it/tdlight/tdlib/Client.java | 14 ----- .../java/it/tdlight/tdlib/ClientManager.java | 29 +++++++++++ src/main/java/it/tdlight/tdlight/Client.java | 14 ----- .../it/tdlight/tdlight/ClientManager.java | 29 +++++++++++ 8 files changed, 140 insertions(+), 78 deletions(-) delete mode 100644 src/main/java/it/tdlight/common/CommonClient.java create mode 100644 src/main/java/it/tdlight/common/CommonClientManager.java delete mode 100644 src/main/java/it/tdlight/tdlib/Client.java create mode 100644 src/main/java/it/tdlight/tdlib/ClientManager.java delete mode 100644 src/main/java/it/tdlight/tdlight/Client.java create mode 100644 src/main/java/it/tdlight/tdlight/ClientManager.java diff --git a/README.md b/README.md index 9366b75..f3cda7c 100644 --- a/README.md +++ b/README.md @@ -89,29 +89,56 @@ dependencies { ## Usage Simple initialization of a native TDLib client ```java +package it.tdlight.example; - -import it.tdlight.tdlight.Client; +import it.tdlight.common.TelegramClient; +import it.tdlight.tdlight.ClientManager; import it.tdlight.common.Init; import it.tdlight.common.Log; +import it.tdlight.common.TDLibException; + +import it.tdlight.jni.TdApi; public class Example { public static void main(String[] args) { // Initialize TDLight native libraries Init.start(); - // Set TDLib log level to 1 - Log.setVerbosityLevel(1); + // Create a client + TelegramClient client = ClientManager.create(Example::onUpdate, Example::onUpdateError, Example::onError); - // Uncomment this line to print TDLib logs to a file - // Log.setFilePath("logs" + File.separatorChar + "tdlib.log"); - - Client client = new Client(); - - // Initialize the TDLib client - client.initializeClient(); + // Here you can use the client. - // Now you can use the client + // Documentation of tdlib methods can be found here: + // https://tdlight-team.github.io/tdlight-docs + + // A similar example on how to use tdlib can be found here: + // https://github.com/tdlib/td/blob/master/example/java/org/drinkless/tdlib/example/Example.java + } + + private static void onUpdate(TdApi.Object object) { + TdApi.Update update = (TdApi.Update) object; + System.out.println("Received update: " + update); + } + + private static void onUpdateError(Throwable exception) { + if (exception instanceof TDLibException) { + String errorMessage = ((TDLibException) exception).getErrorMessage(); + System.out.println("Received an error from updates: " + errorMessage); + } else { + System.out.println("Received an error from updates:"); + exception.printStackTrace(); + } + } + + private static void onError(Throwable exception) { + if (exception instanceof TDLibException) { + String errorMessage = ((TDLibException) exception).getErrorMessage(); + System.out.println("Received an error: " + errorMessage); + } else { + System.out.println("Received an error:"); + exception.printStackTrace(); + } } } ``` diff --git a/src/main/java/it/tdlight/common/CommonClient.java b/src/main/java/it/tdlight/common/CommonClient.java deleted file mode 100644 index 75d5d8c..0000000 --- a/src/main/java/it/tdlight/common/CommonClient.java +++ /dev/null @@ -1,38 +0,0 @@ -package it.tdlight.common; - -public abstract class CommonClient { - - protected abstract String getImplementationName(); - - - private InternalClientManager getClientManager() { - // ClientManager is singleton: - return InternalClientManager.get(getImplementationName()); - } - - public TelegramClient create(ResultHandler updateHandler, - ExceptionHandler updateExceptionHandler, - ExceptionHandler defaultExceptionHandler) { - InternalClient client = new InternalClient(getClientManager(), - updateHandler, - updateExceptionHandler, - defaultExceptionHandler - ); - return create(client); - } - - public TelegramClient create(UpdatesHandler updatesHandler, - ExceptionHandler updateExceptionHandler, - ExceptionHandler defaultExceptionHandler) { - InternalClient client = new InternalClient(getClientManager(), - updatesHandler, - updateExceptionHandler, - defaultExceptionHandler - ); - return create(client); - } - - private TelegramClient create(InternalClient internalClient) { - return internalClient; - } -} diff --git a/src/main/java/it/tdlight/common/CommonClientManager.java b/src/main/java/it/tdlight/common/CommonClientManager.java new file mode 100644 index 0000000..6d1c47d --- /dev/null +++ b/src/main/java/it/tdlight/common/CommonClientManager.java @@ -0,0 +1,37 @@ +package it.tdlight.common; + +public abstract class CommonClientManager { + + private static InternalClientManager getClientManager(String implementationName) { + // ClientManager is singleton: + return InternalClientManager.get(implementationName); + } + + protected static TelegramClient create(String implementationName, + ResultHandler updateHandler, + ExceptionHandler updateExceptionHandler, + ExceptionHandler defaultExceptionHandler) { + InternalClient client = new InternalClient(getClientManager(implementationName), + updateHandler, + updateExceptionHandler, + defaultExceptionHandler + ); + return create(client); + } + + protected static TelegramClient create(String implementationName, + UpdatesHandler updatesHandler, + ExceptionHandler updateExceptionHandler, + ExceptionHandler defaultExceptionHandler) { + InternalClient client = new InternalClient(getClientManager(implementationName), + updatesHandler, + updateExceptionHandler, + defaultExceptionHandler + ); + return create(client); + } + + private static TelegramClient create(InternalClient internalClient) { + return internalClient; + } +} diff --git a/src/main/java/it/tdlight/common/InternalClientManager.java b/src/main/java/it/tdlight/common/InternalClientManager.java index c31111b..574ee59 100644 --- a/src/main/java/it/tdlight/common/InternalClientManager.java +++ b/src/main/java/it/tdlight/common/InternalClientManager.java @@ -16,6 +16,12 @@ public class InternalClientManager implements AutoCloseable { private final AtomicLong currentQueryId = new AtomicLong(); private InternalClientManager(String implementationName) { + try { + Init.start(); + } catch (Throwable ex) { + ex.printStackTrace(); + System.exit(1); + } this.implementationName = implementationName; } diff --git a/src/main/java/it/tdlight/tdlib/Client.java b/src/main/java/it/tdlight/tdlib/Client.java deleted file mode 100644 index 30e608f..0000000 --- a/src/main/java/it/tdlight/tdlib/Client.java +++ /dev/null @@ -1,14 +0,0 @@ -package it.tdlight.tdlib; - -import it.tdlight.common.CommonClient; - -/** - * Interface for interaction with TDLib. - */ -public class Client extends CommonClient { - - @Override - protected String getImplementationName() { - return "tdlib"; - } -} diff --git a/src/main/java/it/tdlight/tdlib/ClientManager.java b/src/main/java/it/tdlight/tdlib/ClientManager.java new file mode 100644 index 0000000..ba41dfc --- /dev/null +++ b/src/main/java/it/tdlight/tdlib/ClientManager.java @@ -0,0 +1,29 @@ +package it.tdlight.tdlib; + +import it.tdlight.common.CommonClientManager; +import it.tdlight.common.ExceptionHandler; +import it.tdlight.common.ResultHandler; +import it.tdlight.common.TelegramClient; +import it.tdlight.common.UpdatesHandler; + +/** + * Interface for interaction with TDLib. + */ +public class ClientManager extends CommonClientManager { + + private static final String implementationName = "tdlib"; + + public static TelegramClient create( + ResultHandler updateHandler, + ExceptionHandler updateExceptionHandler, + ExceptionHandler defaultExceptionHandler) { + return CommonClientManager.create(implementationName, updateHandler, updateExceptionHandler, defaultExceptionHandler); + } + + public static TelegramClient create( + UpdatesHandler updatesHandler, + ExceptionHandler updateExceptionHandler, + ExceptionHandler defaultExceptionHandler) { + return CommonClientManager.create(implementationName, updatesHandler, updateExceptionHandler, defaultExceptionHandler); + } +} diff --git a/src/main/java/it/tdlight/tdlight/Client.java b/src/main/java/it/tdlight/tdlight/Client.java deleted file mode 100644 index b1b0b40..0000000 --- a/src/main/java/it/tdlight/tdlight/Client.java +++ /dev/null @@ -1,14 +0,0 @@ -package it.tdlight.tdlight; - -import it.tdlight.common.CommonClient; - -/** - * Interface for interaction with TDLight. - */ -public class Client extends CommonClient { - - @Override - protected String getImplementationName() { - return "tdlight"; - } -} diff --git a/src/main/java/it/tdlight/tdlight/ClientManager.java b/src/main/java/it/tdlight/tdlight/ClientManager.java new file mode 100644 index 0000000..4d4f4fa --- /dev/null +++ b/src/main/java/it/tdlight/tdlight/ClientManager.java @@ -0,0 +1,29 @@ +package it.tdlight.tdlight; + +import it.tdlight.common.CommonClientManager; +import it.tdlight.common.ExceptionHandler; +import it.tdlight.common.ResultHandler; +import it.tdlight.common.TelegramClient; +import it.tdlight.common.UpdatesHandler; + +/** + * Interface for interaction with TDLight. + */ +public class ClientManager extends CommonClientManager { + + private static final String implementationName = "tdlight"; + + public static TelegramClient create( + ResultHandler updateHandler, + ExceptionHandler updateExceptionHandler, + ExceptionHandler defaultExceptionHandler) { + return CommonClientManager.create(implementationName, updateHandler, updateExceptionHandler, defaultExceptionHandler); + } + + public static TelegramClient create( + UpdatesHandler updatesHandler, + ExceptionHandler updateExceptionHandler, + ExceptionHandler defaultExceptionHandler) { + return CommonClientManager.create(implementationName, updatesHandler, updateExceptionHandler, defaultExceptionHandler); + } +}