1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Tencent-wechat-mars

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Mars

license Release Version PRs Welcome WeChat Approved WeChat Approved

(中文版本请参看这里)

Mars — это кроссплатформенный инфраструктурный компонент, разработанный мобильной командой WeChat. Он доказал свою эффективность для миллиардов пользователей WeChat.

  1. Кроссплатформенность, простота развёртывания при разработке мультиплатформенных или мультибизнес-приложений.
  2. Подходит для передачи небольшого объёма данных.
  3. Дружелюбен к мобильной платформе, потребляет мало энергии и трафика.
  4. Сетевое решение, подходящее для мобильных приложений.

mars

  • comm: общая библиотека, включающая сокеты, потоки, очереди сообщений, сопрограммы и т. д.
  • Xlog: надёжный компонент журнала с высокой производительностью.
  • SDT: компонент обнаружения сети.
  • STN: основной компонент сигнальной сети Mars.

Образцы

Начните с примера использования здесь.

Начало работы

Скрипты Python поддерживают только Python 3.10 и выше.

Выберите Android, iOS/OS X или Windows.

Android

Вы можете использовать либо mars-wrapper, либо mars-core. Мы рекомендуем вам использовать mars-wrapper, когда вы просто хотите создать образец или демонстрацию, в то время как mars-core предпочтительнее использовать в вашем приложении.

mars-wrapper

Добавьте зависимости, добавив следующие строки в ваш app/build.gradle.

dependencies {
    compile 'com.tencent.mars:mars-wrapper:1.2.5'
}

ИЛИ

mars-core

Добавьте зависимости, добавив следующие строки в ваш app/build.gradle.

dependencies {
    compile 'com.tencent.mars:mars-core:1.2.5'
}

ИЛИ

mars-xlog

Если вы просто хотите использовать xlog, добавьте зависимости, добавив следующие строки в ваш app/build.gradle. Обратите внимание: xlog включён в mars-core и mars-wrapper.

dependencies {
    compile 'com.tencent.mars:mars-xlog:1.2.5'
}

Если вы читаете здесь, убедитесь, что вы добавили зависимости от mars-wrapper, mars-core или mars-xlog.

Инициализация Xlog

Инициализируйте Xlog при запуске вашего приложения. Не забудьте использовать эксклюзивную папку для сохранения файлов журналов, никакие другие файлы не допускаются в папке, так как они будут автоматически удалены функцией очистки в Xlog.

Когда в вашем приложении используется несколько процессов, убедитесь, что каждый процесс имеет свой собственный файл журнала.

System.loadLibrary("c++_shared");
System.loadLibrary("marsxlog");

final String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
final String logPath = SDCARD + "/marssample/log";

// this is necessary, or may crash for SIGBUS
final String cachePath = this.getFilesDir() + "/xlog"

//init xlog
Xlog xlog = new Xlog();
Log.setLogImp(xlog);

if (BuildConfig.DEBUG) {
    Log.setConsoleLogOpen(true);
    Log.appenderOpen(Xlog.LEVEL_DEBUG, Xlog.AppednerModeAsync, "", logPath, logFileName, 0);
} else {
    Log.setConsoleLogOpen(false);
    Log.appenderOpen(Xlog.LEVEL_INFO, Xlog.AppednerModeAsync, "", logPath, logFileName, 0);
}

Неинициализированный Xlog, когда ваше приложение завершает работу

Log.appenderClose();

Инициализация STN

Если вы добавляете зависимости mars-core в свой проект, вам необходимо инициализировать и освободить STN. Инициализируйте STN перед использованием.

// set callback **AppLogic.setCallBack(stub);**

**StnLogic.setCallBack(stub);**  

**SdtLogic.setCallBack(stub);** 

// Инициализация Mars PlatformComm

**Mars.init(getApplicationContext(), new Handler(Looper.getMainLooper()));**

// Инициализация Mars

**StnLogic.setLonglinkSvrAddr(profile.longLinkHost(), profile.longLinkPorts());**

**StnLogic.setShortlinkSvrAddr(profile.shortLinkPort());**

**StnLogic.setClientVersion(profile.productID());**

**Mars.onCreate(true);**

**BaseEvent.onForeground(true);**

**StnLogic.makesureLongLinkConnected();**

*Сначала следует вызвать интерфейс setCallBack, а затем Mars.init. Затем, чтобы инициализировать Mars, необходимо строго следовать порядку четырёх команд. Наконец, после инициализации Mars можно вызывать onForeground и makesureLongLinkConnect.*

Уничтожить STN или выйти из приложения:

**Mars.onDestroy();**

#### Событие изменения

Изменение сети:

**BaseEvent.onNetworkChange()**

Если вы добавите зависимости mars-wrapper в свой проект, вам просто нужно инициализировать STN и не нужно его деинициализировать.

**MarsServiceProxy.init(this, getMainLooper(), null);**

Независимо от того, какой способ зависимостей вы использовали, вы должны обратить внимание на следующее.

Состояние (фон или передний план) приложения изменилось:

**BaseEvent.onForeground(boolean);**

Изменилась учётная запись приложения:

**StnLogic.reset();**

Если вы хотите изменить алгоритм шифрования Xlog, упаковщик/распаковщик longlink/shortlink или хотите определить другие компоненты самостоятельно, обратитесь [сюда](https://github.com/Tencent/mars/wiki/Mars-Android-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97).

### iOS/OS X

Скомпилируйте:

**python build_ios.py**

или

**python build_osx.py**

1. Добавьте mars.framework как зависимость вашего проекта.
2. Переименуйте файлы в mars/libraries/mars_android_sdk/jni с расширением .rewriteme в расширение .cc.
3. Добавьте заголовочные файлы в mars/libraries/mars_android_sdk/jni и исходные файлы из шага 2 в ваш проект.

#### Инициализация Xlog

Инициализируйте Xlog при запуске приложения. Не забудьте использовать эксклюзивную папку для сохранения файлов журнала, никакие другие файлы не допускаются в папке, так как они будут удалены функцией очистки в Xlog автоматически.

**NSString* logPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"/log"];**

// Установите запрет на резервное копирование для logpath

**const char* attrName = "com.apple.MobileBackup";**

**u_int8_t attrValue = 1;**

**setxattr([logPath UTF8String], attrName, &attrValue, sizeof(attrValue), 0, 0);**

// инициализируем xlogger

**#if DEBUG**

**xlogger_SetLevel(kLevelDebug);**

**appender_set_console_log(true);**

**#else**

**xlogger_SetLevel(kLevelInfo);**

**appender_set_console_log(false);**

**#endif**

**XLogConfig config;**

**config.mode_ = kAppenderAsync;**

**config.logdir_ = [logPath UTF8String];**

**config.nameprefix_ = "Test";**

**config.pub_key_ = "";**

**config.compress_mode_ = kZlib;**

**config.compress_level_ = 0;**

**config.cachedir_ = "";**

**config.cache_days_ = 0;**

**appender_open(config);**

Закройте xlog в функции «applicationWillTerminate»:

**appender_close();**

#### Инициализация STN

Инициализируйте STN перед использованием:

**- (void)setCallBack {**

**mars::stn::SetCallback(mars::stn::StnCallBack::Instance());**

**mars::app::SetCallback(mars::app::AppCallBack::Instance());**

**}**

**- (void) createMars {**

**mars::baseevent::OnCreate();**

**}**

**- (void)setClientVersion:(UInt32)clientVersion {**

**mars::stn::SetClientVersion(clientVersion);**

**}**

**- (void)setShortLinkDebugIP:(NSString *)IP port:(const unsigned short)port {**

**std::string ipAddress([IP UTF8String]);**

**mars::stn::SetShortlinkSvrAddr(port, ipAddress);**

**}**

**- (void)setShortLinkPort:(const unsigned short)port {**

**mars::stn::SetShortlinkSvrAddr(port);**

**}**

**- (void)setLongLinkAddress:(NSString *)string port:(const unsigned short)port debugIP:(NSString *)IP {**

**std::string ipAddress([string UTF8String]);**

**std::string debugIP([IP UTF8String]);** **Текст запроса:**

Firstly, you should call the setCallBack interface, and secondly, the Mars.init. Then, to initialize the Mars, there is to need to strictly follow the orders of the four commands. Finally, after Mars are initialized, onForeground and makesureLongLinkConnect can be called.

If you want to destroy STN or exit App:

```objc
- (void)destroyMars {
    mars::baseevent::OnDestroy();
}

Event Change:

When the App's state of background or foreground is changed:

- (void)reportEvent_OnForeground:(BOOL)isForeground {
    mars::baseevent::OnForeground(isForeground);
}

Network change:

- (void)reportEvent_OnNetworkChange {
    mars::baseevent::OnNetworkChange();
}

Windows: Install Visual Studio 2015. Compile:

python build_windows.py
  1. Add mars.lib as a dependency of your project.
  2. Rename files in mars/libraries/mars_android_sdk/jni with .rewriteme extension to .cc extension.
  3. Add header files in mars/libraries/mars_android_sdk/jni and source files from step 2 into your project.

Xlog Init: Initialize Xlog when your app starts. Remember to use an exclusive folder to save the log files, no other files are acceptable in the folder since they would be removed by the cleansing function in Xlog automatically.

std::string logPath = ""; //use your log path
std::string pubKey = ""; //use you pubkey for log encrypt

// init xlog
#if DEBUG
xlogger_SetLevel(kLevelDebug);
appender_set_console_log(true);
#else
xlogger_SetLevel(kLevelInfo);
appender_set_console_log(false);
#endif
appender_open(kAppenderAsync, logPath.c_str(), "Test", 0, pubKey.c_str());

Uninitialized xlog before your app exits:

appender_close();

STN Init:

Initialize STN before you use it:

void setShortLinkDebugIP(const std::string& _ip, unsigned short _port)
{
    mars::stn::SetShortlinkSvrAddr(_port, _ip);
}
void setShortLinkPort(unsigned short _port)
{
    mars::stn::SetShortlinkSvrAddr(_port, "");
}
void setLongLinkAddress(const std::string& _ip, unsigned short _port, const std::string& _debug_ip)
{
    vector<uint16_t> ports;
    ports.push_back(_port);
    mars::stn::SetLonglinkSvrAddr(_ip, ports, _debug_ip);
}

void Init()
{
    mars::stn::SetCallback(mars::stn::StnCallBack::Instance());
    mars::app::SetCallback(mars::app::AppCallBack::Instance());
    mars::baseevent::OnCreate();

    //todo
    //mars::stn::SetClientVersion(version);
    //setShortLinkDebugIP(...)
    //setLongLinkAddress(...)

    mars::baseevent::OnForeground(true);
    mars::stn::MakesureLonglinkConnected();
}

Firstly, you should call the setCalBack interface, and secondly, the Mars.init. Then, to initialize the Mars, there is to need to strictly follow the orders of the four commands. Finally, after Mars are initialized, onForeground and makesureLongLinkConnect can be called.

If you want to destroy STN or exit App:

mars::baseevent::OnDestroy();

Перевод текста на русский язык:

Прежде всего необходимо вызвать интерфейс setCallBack, а затем — Mars.init. Затем, чтобы инициализировать Mars, необходимо строго следовать порядку четырёх команд. Наконец, после инициализации Mars можно вызывать onForeground и makesureLongLinkConnect.

Если вы хотите уничтожить STN или закрыть приложение:

- (void)destroyMars {
    mars::baseevent::OnDestroy();
}

Изменение события:

При изменении состояния приложения на фоновое или переднее:

- (void)reportEvent_OnForeground:(BOOL)isForeground {
    mars::baseevent::OnForeground(isForeground);
}

Сетевое изменение:

- (void)reportEvent_OnNetworkChange {
    mars::baseevent::OnNetworkChange();
}

Для Windows: Установите Visual Studio 2015. Скомпилируйте:

python build_windows.py
  1. Добавьте mars.lib в качестве зависимости вашего проекта.
  2. Переименуйте файлы в mars/libraries/mars_android_sdk/jni с расширением .rewriteme в расширение .cc.
  3. Добавьте заголовочные файлы в mars/libraries/mars_android_sdk/jni и исходные файлы из шага 2 в свой проект.

Инициализация Xlog: Инициализируйте Xlog при запуске вашего приложения. Не забудьте использовать эксклюзивную папку для сохранения файлов журнала, никакие другие файлы не должны находиться в этой папке, так как они будут удалены функцией очистки в Xlog автоматически.

std::string logPath = ""; //используйте свой путь к журналу
std::string pubKey = ""; //используйте ключ шифрования журнала

// инициализируем xlog
#if DEBUG
xlogger_SetLevel(kLevelDebug);
appender_set_console_log(true);
#else
xlogger_SetLevel(kLevelInfo);
appender_set_console_log(false);
#endif
appender_open(kAppenderAsync, logPath.c_str(), «Test», 0, pubKey.c_str());

Неинициализированный xlog перед выходом из приложения:

appender_close();

Инициализация STN:

Инициализируйте STN перед использованием:

void setShortLinkDebugIP(const std::string& _ip, unsigned short _port)
{
    mars::stn::SetShortlinkSvrAddr(_port, _ip);
}
void setShortLinkPort(unsigned short _port)
{
    mars::stn::SetShortlinkSvrAddr(_port, "");
}
void setLongLinkAddress(const std::string& _ip, unsigned short _port, const std::string& _debug_ip)
{
    vector<uint16_t> ports;
    ports.push_back(_port);
    mars::stn::SetLonglinkSvrAddr(_ip, ports, _debug_ip);
}

void Init()
{
    mars::stn::SetCallback(mars::stn::StnCallBack::Instance());
    mars::app::SetCallback(mars::app::AppCallBack::Instance());
    mars::baseevent::OnCreate();

    //todo
    //mars::stn::SetClientVersion(version);
    //setShortLinkDebugIP(...)
    //setLongLinkAddress(...)

    mars::baseevent::OnForeground(true);
    mars::stn::MakesureLonglinkConnected();
}

Прежде всего необходимо вызвать интерфейс setCalBack, а затем Mars.init. Затем, чтобы инициализировать Mars, необходимо строго следовать порядку четырёх команд. Наконец, после того как Mars будет инициализирован, можно вызывать onForeground и makeSureLongLinkConnected. Mars

Лицензия

Mars находится под лицензией MIT. Подробнее см. в файле LICENSE.


Mars

license Release Version PRs Welcome WeChat Approved WeChat Approved

Mars — это официальный кроссплатформенный и межотраслевой базовый компонент для терминалов от WeChat.

  • comm: независимая общедоступная библиотека, включающая в себя сокеты, потоки, очереди сообщений и сопрограммы;
  • xlog: высоконадёжный и высокопроизводительный компонент журнала времени выполнения;
  • SDT: компонент сетевой диагностики;
  • STN: основной компонент Mars, модуль распространения сигналов.

Образцы

Для получения информации об использовании образцов см. здесь.

Начало работы

python >= 3,10 Подключение к Android, iOS/OS X или Windows.

Android

Gradle предлагает два способа подключения: mars-wrapper или mars-core. Если вы просто хотите создать образец, рекомендуется использовать mars-wrapper для быстрой разработки. Однако, если вы хотите использовать Mars в своём приложении, рекомендуется использовать mars-core, который обеспечивает большую гибкость настройки.

mars-wrapper

Добавьте зависимость mars-wrapper в файл app/build.gradle:

dependencies {
    compile 'com.tencent.mars:mars-wrapper:1.2.5'
}

Или

mars-core

Добавьте зависимость mars-core в файл app/build.gradle:

dependencies {
    compile 'com.tencent.mars:mars-core:1.2.5'
}

Или

mars-xlog

Если вы хотите использовать только xlog, добавьте зависимость xlog (mars-core и mars-wrapper уже включают xlog):

dependencies {
    compile 'com.tencent.mars:mars-xlog:1.2.5'
}

Прежде чем продолжить, убедитесь, что вы добавили зависимость mars-wrapper, mars-core или mars-xlog.

Инициализация Xlog

После загрузки Xlog в начале программы необходимо инициализировать Xlog. Однако обратите внимание, что если ваше приложение использует несколько процессов, не следует выводить журналы нескольких процессов в один и тот же файл. Кроме того, сохраняйте файлы журналов в отдельном каталоге, чтобы избежать их автоматической очистки xlog.

System.loadLibrary("c++_shared");
System.loadLibrary("marsxlog");

final String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
final String logPath = SDCARD + "/marssample/log";

// this is necessary, or may crash for SIGBUS
final String cachePath = this.getFilesDir() + "/xlog"

//init xlog
Xlog.XLogConfig logConfig = new Xlog.XLogConfig();
logConfig.mode = Xlog.AppednerModeAsync;
logConfig.logdir = logPath;
logConfig.nameprefix = logFileName;
logConfig.pubkey = "";
logConfig.compressmode = Xlog.ZLIB_MODE;
logConfig.compresslevel = 0;
logConfig.cachedir = "";
logConfig.cachedays = 0;
if (BuildConfig.DEBUG) {
    logConfig.level = Xlog.LEVEL_VERBOSE;
    Xlog.setConsoleLogOpen(true);
} else {
    logConfig.level = Xlog.LEVEL_INFO;
    Xlog.setConsoleLogOpen(false);
}

Log.setLogImp(new Xlog());

При выходе из программы закройте журнал:

Log.appenderClose();

STN Init

Если вы включили mars-core как зависимость в свой проект, вам необходимо явно инициализировать и деинициализировать STN.

Перед использованием STN выполните инициализацию:

// set callback
AppLogic.setCallBack(stub);
StnLogic.setCallBack(stub);
SdtLogic.setCallBack(stub);

// Initialize the Mars PlatformComm
Mars.init(getApplicationContext(), new Handler(Looper.getMainLooper()));

// Initialize the Mars
StnLogic.setLonglinkSvrAddr(profile.longLinkHost(), profile.longLinkPorts());
StnLogic.setShortlinkSvrAddr(profile.shortLinkPort());
StnLogic.setClientVersion(profile.productID());
Mars.onCreate(true);
BaseEvent.onForeground(true);

StnLogic.makesureLongLinkConnected();

Порядок инициализации не обязательно должен строго соответствовать приведённому выше коду, но перед инициализацией необходимо вызвать setCallBack (обратный вызов файла можно посмотреть в demo), затем вызвать Mars.init, а затем onForeground и makesureLongLinkConnect. Порядок между ними можно изменить по своему усмотрению. Обратите внимание: STN по умолчанию работает в фоновом режиме, поэтому сначала необходимо инициализировать STN. После необходимо явно вызвать один раз BaseEvent.onForeground(true)

При необходимости освободить STN или выйти из программы:

Mars.onDestroy();

Event Change

При переключении сети:

BaseEvent.onNetworkChange()

Если вы добавляете mars-wrapper в качестве зависимости в свой проект, вам нужно только явно инициализировать STN, не нужно выполнять обратную инициализацию (поскольку mars-wrapper выполняет обратную инициализацию).

MarsServiceProxy.init(this, getMainLooper(),null);

Независимо от того, используете ли вы mars-wrapper или mars-core, вы должны обратить особое внимание на следующие события:

  • Переключение переднего и заднего плана:
BaseEvent.onForeground(boolean);
  • Изменение учётных данных приложения:
StnLogic.reset();

Если вы хотите изменить алгоритм шифрования Xlog или часть упаковки длинного и короткого соединения или даже изменить другие части компонента, обратитесь к здесь.

Apple_cn (iOS/OS X)

Компиляция

python build_ios.py

или

python build_osx.py

Добавьте mars.framework в качестве зависимости в ваш проект и удалите суффикс «rewriteme» из файлов в каталоге mars/libraries/mars_android_sdk/jni и заголовочные файлы вместе и добавьте их в свой проект.

Xlog Init

После запуска программы загрузите Xlog и сразу же инициализируйте его. Но обратите внимание, что для сохранения каталога журналов используйте отдельный каталог, чтобы предотвратить случайное удаление файлов xlog.

NSString* logPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"/log"];

// set do not backup for logpath
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
setxattr([logPath UTF8String], attrName, &attrValue, sizeof(attrValue), 0, 0);

// init xlogger
#if DEBUG
xlogger_SetLevel(kLevelDebug);
appender_set_console_log(true);
#else
xlogger_SetLevel(kLevelInfo);
appender_set_console_log(false);
#endif

XLogConfig config;
config.mode_ = kAppenderAsync;
config.logdir_ = [logPath UTF8String];
config.nameprefix_ = "Test";
config.pub_key_ = "";
config.compress_mode_ = kZlib;
config.compress_level_ = 0;
config.cachedir_ = "";
config.cache_days_ = 0;
appender_open(config);

В функции applicationWillTerminate выполните обратную инициализацию Xlog

appender_close();

STN Init

Перед использованием STN инициализируйте:

- (void)setCallBack {
    mars::stn::SetCallback(mars::stn::StnCallBack::Instance());
    mars::app::SetCallback(mars::app::AppCallBack::Instance());
}

- (void) createMars {
    mars::baseevent::OnCreate();
}

- (void)setClientVersion:(UInt32)clientVersion {
    mars::stn::SetClientVersion(clientVersion);
}

- (void)setShortLinkDebugIP:(NSString *)IP port:(const unsigned short)port {
    std::string ipAddress([IP UTF8String]);
    mars::stn::SetShortlinkSvrAddr(port, ipAddress);
}

- (void)setShortLinkPort:(const unsigned short)port {
    mars::stn::SetShortlinkSvrAddr(port);
}

- (void)setLongLinkAddress:(NSString *)string port:(const unsigned short)port debugIP:(NSString *)IP {
    std::string ipAddress([string UTF8String]);
    std::vector<uint16_t> ports;
    ports.push_back(port);
    mars::stn::SetLonglinkSvrAddr(ipAddress,ports,debugIP);
}

- (void)setLongLinkAddress:(NSString *)string port:(const unsigned short)port {
    std::string ipAddress([string UTF8String]);
    std::vector<uint16_t> ports;
    ports.push_back(port);
    mars::stn::SetLonglinkSvrAddr(ipAddress,ports);
}

- (void)reportEvent_OnForeground:(BOOL)isForeground {
    mars::baseevent::OnForeground(isForground);
}

- (void)makesureLongLinkConnect {
    mars::stn::MakesureLonglinkConnected();
}

Инициализация не обязательно должна строго следовать порядку кода выше, но при инициализации сначала вызовите интерфейс setCallBack (обратный вызов файла можно написать в соответствии с демонстрацией), затем вызовите Mars.init, а затем вызовите onForeground и makesureLongLinkConnect. Порядок между ними может быть произвольно изменён. Обратите внимание: STN по умолчанию находится в фоновом режиме, поэтому после инициализации STN необходимо явно вызватьBaseEvent.onForeground(true)

Для освобождения STN или выхода из программы:

- (void)destroyMars {
    mars::baseevent::OnDestroy();
}

Event Change

Переключение переднего и заднего плана:

- (void)reportEvent_OnForeground:(BOOL)isForeground {
    mars::baseevent::OnForeground(isForeground);
}

Сетевое переключение:

- (void)reportEvent_OnNetworkChange {
    mars::baseevent::OnNetworkChange();
}

Windows

Установите Visual Studio 2015

Скомпилируйте

python build_windows.py

Поместите

Примечание: в ответе могут быть неточности, поскольку некоторые фрагменты исходного текста невозможно перевести без контекста. mars.lib в качестве зависимости добавляется к вашему проекту, файлы из каталога mars/libraries/mars_android_sdk/jni с суффиксом «rewriteme» удаляются вместе с этим суффиксом и включаются в ваш проект.

Xlog Init

После загрузки Xlog при запуске программы следует сразу же его инициализировать. При этом необходимо использовать отдельный каталог для сохранения логов, чтобы избежать их автоматической очистки xlog.

std::string logPath = ""; //use your log path
std::string pubKey = ""; //use you pubkey for log encrypt

// init xlog
#if DEBUG
xlogger_SetLevel(kLevelDebug);
appender_set_console_log(true);
#else
xlogger_SetLevel(kLevelInfo);
appender_set_console_log(false);
#endif
appender_open(kAppenderAsync, logPath.c_str(), "Test", 0,  pubKey.c_str());

Перед завершением работы программы необходимо выполнить обратную инициализацию Xlog:

appender_close();

STN Init

Перед использованием STN необходимо выполнить инициализацию:

void setShortLinkDebugIP(const std::string& _ip, unsigned short _port)
{
    mars::stn::SetShortlinkSvrAddr(_port, _ip);
}
void setShortLinkPort(unsigned short _port)
{
    mars::stn::SetShortlinkSvrAddr(_port, "");
}
void setLongLinkAddress(const std::string& _ip, unsigned short _port, const std::string& _debug_ip)
{
    vector<uint16_t> ports;
    ports.push_back(_port);
    mars::stn::SetLonglinkSvrAddr(_ip, ports, _debug_ip);
}

void Init()
{
    mars::stn::SetCallback(mars::stn::StnCallBack::Instance());
    mars::app::SetCallback(mars::app::AppCallBack::Instance());
    mars::baseevent::OnCreate();

    //todo
    //mars::stn::SetClientVersion(version);
    //setShortLinkDebugIP(...)
    //setLongLinkAddress(...)

    mars::baseevent::OnForeground(true);
    mars::stn::MakesureLonglinkConnected();
}

Порядок инициализации не обязательно должен строго соответствовать указанному коду, но важно сначала вызвать интерфейс setCallBack (обратный вызов), затем Mars.init, после чего — onForeground и makesureLongLinkConnect. Порядок между этими вызовами можно изменять по своему усмотрению. Обратите внимание: STN по умолчанию работает в фоновом режиме, поэтому после инициализации STN нужно активно вызвать BaseEvent.onForeground(true).

При необходимости освободить STN или завершить программу:

mars::baseevent::OnDestroy();

Support

Если у вас есть другие вопросы:

  1. Посмотрите mars/sample.
  2. Прочитайте исходный код.
  3. Прочитайте wiki или FAQ.
  4. Свяжитесь с нами.

Contributing

Для получения информации о ветвлении Mars, управлении проблемами и рекомендациями PR, пожалуйста, прочитайте Mars Contributing Guide.

License

Mars использует протокол MIT, подробности см. в LICENSE.

Информация о продукте

  • Название SDK: Mars.
  • Номер версии: 0.2.0.
  • Разработчик: Tencent Computer System Co., Ltd., Shenzhen.
  • Основные функции: Mars — это официальный кроссплатформенный и межотраслевой базовый компонент терминала от WeChat. Поддерживает iOS, macOS и Android. Mars оптимизирован для мобильных сетей и обеспечивает высокопроизводительные сетевые функции.
  • Использование Mars.
  • Правила защиты личной информации Mars.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Mars — это официальный базовый компонент терминала WeChat. Это базовый компонент, который не зависит от бизнес-логики и платформы и написан на C++. В настоящее время он подключён к клиентам WeChat на Android, iOS, Mac, Windows и WP. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Tencent-wechat-mars.git
git@api.gitlife.ru:oschina-mirror/Tencent-wechat-mars.git
oschina-mirror
Tencent-wechat-mars
Tencent-wechat-mars
master