Skip to content

Commit

Permalink
Return whether Log::set_file_path succeded or not.
Browse files Browse the repository at this point in the history
GitOrigin-RevId: a928f8691ebedfd7451bf8bd7957071786b50349
  • Loading branch information
levlam committed Jan 28, 2018
1 parent 662471e commit a47d5d5
Show file tree
Hide file tree
Showing 13 changed files with 64 additions and 51 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)

project(TDLib VERSION 1.0.5 LANGUAGES CXX C)
project(TDLib VERSION 1.0.6 LANGUAGES CXX C)

option(TD_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TDLib API.")

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ target_link_libraries(YourTarget PRIVATE Td::TdStatic)

Or you could install `TDLib` and then reference it in your CMakeLists.txt like this:
```
find_package(Td 1.0.5 REQUIRED)
find_package(Td 1.0.6 REQUIRED)
target_link_libraries(YourTarget PRIVATE Td::TdStatic)
```
See [example/cpp/CMakeLists.txt](https://github.com/tdlib/td/tree/master/example/cpp/CMakeLists.txt).
Expand Down
2 changes: 1 addition & 1 deletion example/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR)

project(TdExample VERSION 1.0 LANGUAGES CXX)

find_package(Td 1.0.5 REQUIRED)
find_package(Td 1.0.6 REQUIRED)

add_executable(tdjson_example tdjson_example.cpp)
target_link_libraries(tdjson_example PRIVATE Td::TdJson)
Expand Down
8 changes: 4 additions & 4 deletions example/java/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)

project(TdJavaExample VERSION 1.0 LANGUAGES CXX)

Expand Down Expand Up @@ -29,7 +29,7 @@ endif()

add_custom_target(td_generate_java_api
COMMAND ${GENERATE_JAVA_API_CMD}
COMMENT "Generate Java TDLib API source files"
COMMENT "Generating Java TDLib API source files"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/td/bin/td_generate_java_api ${TD_API_TLO_PATH} ${TD_API_TL_PATH} ${JAVADOC_TL_DOCUMENTATION_GENERATOR_PATH}
)

Expand All @@ -38,15 +38,15 @@ get_filename_component(JAVA_OUTPUT_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin REALPAT
file(MAKE_DIRECTORY ${JAVA_OUTPUT_DIRECTORY})
add_custom_target(build_java
COMMAND ${Java_JAVAC_EXECUTABLE} -d ${JAVA_OUTPUT_DIRECTORY} ${JAVA_SOURCE_PATH}/example/Example.java ${JAVA_SOURCE_PATH}/Client.java ${JAVA_SOURCE_PATH}/Log.java ${JAVA_SOURCE_PATH}/TdApi.java
COMMENT "Build Java code"
COMMENT "Building Java code"
DEPENDS td_generate_java_api
)

set(JAVA_SOURCE_PATH "${TD_API_JAVA_PATH}/${TD_API_JAVA_PACKAGE}")
add_custom_target(generate_javadoc
COMMAND ${Java_JAVADOC_EXECUTABLE} -d ${JAVA_OUTPUT_DIRECTORY}/../docs org.drinkless.tdlib
WORKING_DIRECTORY ${TD_API_JAVA_PATH}
COMMENT "Generate Javadoc documentation"
COMMENT "Generating Javadoc documentation"
DEPENDS td_generate_java_api
)

Expand Down
3 changes: 2 additions & 1 deletion example/java/org/drinkless/tdlib/Log.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ public final class Log {
*
* @param filePath Path to a file for writing TDLib internal log. Use an empty path to
* switch back to logging to the System.err.
* @return whether opening the log file succeeded
*/
public static native void setFilePath(String filePath);
public static native boolean setFilePath(String filePath);

/**
* Changes maximum size of TDLib log file.
Expand Down
69 changes: 39 additions & 30 deletions example/java/org/drinkless/tdlib/example/Example.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import org.drinkless.tdlib.TdApi;

import java.io.Console;
import java.io.IOError;
import java.io.IOException;
import java.util.NavigableSet;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
Expand Down Expand Up @@ -161,39 +163,43 @@ private static long getChatId(String arg) {
}

private static void getCommand() {
String command = System.console().readLine("Enter command (gcs - GetChats, gc - GetChat, me - GetMe, sm <chatId> <message> - SendMessage, lo - LogOut, q - Quit): ");
String command = System.console().readLine("Enter command (gcs - GetChats, gc <chatId> - GetChat, me - GetMe, sm <chatId> <message> - SendMessage, lo - LogOut, q - Quit): ");
String[] commands = command.split(" ", 2);
switch (commands[0]) {
case "gcs": {
int limit = 20;
if (commands.length > 1) {
limit = toInt(commands[1]);
try {
switch (commands[0]) {
case "gcs": {
int limit = 20;
if (commands.length > 1) {
limit = toInt(commands[1]);
}
getChatList(limit);
break;
}
getChatList(limit);
break;
}
case "gc":
client.send(new TdApi.GetChat(getChatId(commands[1])), defaultHandler);
break;
case "me":
client.send(new TdApi.GetMe(), defaultHandler);
break;
case "sm": {
String[] args = commands[1].split(" ", 2);
sendMessage(getChatId(args[0]), args[1]);
break;
case "gc":
client.send(new TdApi.GetChat(getChatId(commands[1])), defaultHandler);
break;
case "me":
client.send(new TdApi.GetMe(), defaultHandler);
break;
case "sm": {
String[] args = commands[1].split(" ", 2);
sendMessage(getChatId(args[0]), args[1]);
break;
}
case "lo":
haveAuthorization = false;
client.send(new TdApi.LogOut(), defaultHandler);
break;
case "q":
quiting = true;
haveAuthorization = false;
client.send(new TdApi.Close(), defaultHandler);
break;
default:
System.err.println("Unsupported command: " + command);
}
case "lo":
haveAuthorization = false;
client.send(new TdApi.LogOut(), defaultHandler);
break;
case "q":
quiting = true;
haveAuthorization = false;
client.send(new TdApi.Close(), defaultHandler);
break;
default:
System.err.println("Unsupported command: " + command);
} catch (ArrayIndexOutOfBoundsException e) {
print("Not enough arguments");
}
}

Expand Down Expand Up @@ -259,6 +265,9 @@ private static void sendMessage(long chatId, String message) {
public static void main(String[] args) throws InterruptedException {
// disable TDLib log
Log.setVerbosityLevel(0);
if (!Log.setFilePath("log")) {
throw new IOError(new IOException("Write access to the current directory is required"));
}

// create client
client = Client.create(new UpdatesHandler(), null, null);
Expand Down
6 changes: 3 additions & 3 deletions example/java/td_jni.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ static void Log_setVerbosityLevel(JNIEnv *env, jclass clazz, jint new_log_verbos
td::Log::set_verbosity_level(static_cast<int>(new_log_verbosity_level));
}

static void Log_setFilePath(JNIEnv *env, jclass clazz, jstring file_path) {
td::Log::set_file_path(td::jni::from_jstring(env, file_path));
static jboolean Log_setFilePath(JNIEnv *env, jclass clazz, jstring file_path) {
return td::Log::set_file_path(td::jni::from_jstring(env, file_path)) ? JNI_TRUE : JNI_FALSE;
}

static void Log_setMaxFileSize(JNIEnv *env, jclass clazz, jlong max_file_size) {
Expand Down Expand Up @@ -132,7 +132,7 @@ static jint register_native(JavaVM *vm) {
register_method(client_class, "destroyNativeClient", "(J)V", Client_destroyNativeClient);

register_method(log_class, "setVerbosityLevel", "(I)V", Log_setVerbosityLevel);
register_method(log_class, "setFilePath", "(Ljava/lang/String;)V", Log_setFilePath);
register_method(log_class, "setFilePath", "(Ljava/lang/String;)Z", Log_setFilePath);
register_method(log_class, "setMaxFileSize", "(J)V", Log_setMaxFileSize);

register_method(object_class, "toString", "()Ljava/lang/String;", Object_toString);
Expand Down
2 changes: 1 addition & 1 deletion example/python/tdjson_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
td_json_client_destroy.argtypes = [c_void_p]

td_set_log_file_path = tdjson.td_set_log_file_path
td_set_log_file_path.restype = None
td_set_log_file_path.restype = c_int
td_set_log_file_path.argtypes = [c_char_p]

td_set_log_max_file_size = tdjson.td_set_log_max_file_size
Expand Down
9 changes: 5 additions & 4 deletions td/telegram/Log.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,18 @@ static void fatal_error_callback_wrapper(CSlice message) {
fatal_error_callback(message.c_str());
}

void Log::set_file_path(string file_path) {
bool Log::set_file_path(string file_path) {
if (file_path.empty()) {
log_interface = default_log_interface;
return;
return true;
}

if (file_log.init(file_path, max_log_file_size)) {
log_interface = &ts_log;
} else {
LOG(FATAL) << "Can't init file log";
return true;
}

return false;
}

void Log::set_max_file_size(int64 max_file_size) {
Expand Down
3 changes: 2 additions & 1 deletion td/telegram/Log.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ class Log {
*
* \param[in] file_path Path to a file where the internal TDLib log will be written. Use an empty path to
* switch back to the default logging behaviour.
* \return True on success, or false otherwise, i.e. if the file can't be opened for writing.
*/
static void set_file_path(std::string file_path);
static bool set_file_path(std::string file_path);

/**
* Sets maximum size of the file to where the internal TDLib log is written before the file will be auto-rotated.
Expand Down
2 changes: 1 addition & 1 deletion td/telegram/Td.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ class Td final : public NetQueryCallback {
static td_api::object_ptr<td_api::Object> static_request(td_api::object_ptr<td_api::Function> function);

private:
static constexpr const char *tdlib_version = "1.0.5";
static constexpr const char *tdlib_version = "1.0.6";
static constexpr int32 ONLINE_TIMEOUT = 240;

void send_result(uint64 id, tl_object_ptr<td_api::Object> object);
Expand Down
4 changes: 2 additions & 2 deletions td/telegram/td_log.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

#include <cstdint>

void td_set_log_file_path(const char *file_path) {
td::Log::set_file_path(file_path == nullptr ? "" : file_path);
int td_set_log_file_path(const char *file_path) {
return static_cast<int>(td::Log::set_file_path(file_path == nullptr ? "" : file_path));
}

void td_set_log_max_file_size(long long max_file_size) {
Expand Down
3 changes: 2 additions & 1 deletion td/telegram/td_log.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ extern "C" {
*
* \param[in] file_path Null-terminated path to a file where the internal TDLib log will be written.
* Use an empty path to switch back to the default logging behaviour.
* \return True 1 on success, or 0 otherwise, i.e. if the file can't be opened for writing.
*/
TDJSON_EXPORT void td_set_log_file_path(const char *file_path);
TDJSON_EXPORT int td_set_log_file_path(const char *file_path);

/**
* Sets maximum size of the file to where the internal TDLib log is written before the file will be auto-rotated.
Expand Down

0 comments on commit a47d5d5

Please sign in to comment.