// Copyright 2019 The TAL Authors. All rights reserved.
#ifndef LIB_OWCR_EXTENSION_PUBLIC_IEXTENSION_API_DELEGATE_
#define LIB_OWCR_EXTENSION_PUBLIC_IEXTENSION_API_DELEGATE_

namespace owcr {
namespace extension {
enum LogLevel {
  LOG_DEBUG_MESSAGE = 0,
  LOG_INFO_MESSAGE,
  LOG_WARNING_MESSAGE,
  LOG_ERROR_MESSAGE,
  LOG_CRITICAL_MESSAGE,
};
class IExtensionApiDelegate {
 public:
  IExtensionApiDelegate() {}
  virtual ~IExtensionApiDelegate() {}
  /**
  * @guid computer guid
  * @size size >= 33;
  */
  virtual void Guid(char* guid, int size) = 0;
  virtual void WriteLogMessage(LogLevel type, const char* message) = 0;
  virtual void StartTimer(int timer_id, void* function_name, int interval) = 0;
  virtual void StopTimer(int timer_id) = 0;
  // 写入第三方日志路径，用于上传服务器
  // log_dir：只包含路径，则默认上传成功后默认不删除日志，向前兼容
  // {"dir":"日志路径","delete":true}日志上传成功后，
  // delete:true，删除日志，delete:false，不删除
  virtual void WriteThirdLogDir(const char* log_dir) = 0;
  virtual void SetSocket5ProxyInfo(const char* proxy_info,
                                     const char* proxy_request_sign) = 0;
};

}  // namespace extension
}  // namespace owcr
#endif  // LIB_OWCR_EXTENSION_PUBLIC_IEXTENSION_API_DELEGATE_
