in Sources/OtlpExporter/OtlpSLSSpanExporter.swift [43:104]
func initLogProducer(_ endpoint: String?, _ project: String?, _ logstore: String?, _ accessKeyId: String?, _ accessKeySecret: String?, _ accessKeyToken: String?) {
config = LogProducerConfig(endpoint: endpoint, project: project, logstore: logstore, accessKeyID: accessKeyId, accessKeySecret: accessKeySecret, securityToken: accessKeyToken)
config?.setTopic(scope)
config?.setPacketLogBytes(1024*1024)
config?.setPacketLogCount(4096)
config?.setPacketTimeout(3000)
config?.setMaxBufferLimit(32*1024*1024)
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let path = (paths.last ?? "") + "/sls_\(scope)_data"
config?.setPersistent(1)
config?.setPersistentForceFlush(isPersistentFlush ? 1 : 0)
config?.setPersistentFilePath(path)
config?.setPersistentMaxFileCount(10)
config?.setPersistentMaxFileSize(10*1024*1024)
config?.setPersistentMaxLogCount(65536)
config?.setDropDelayLog(0)
config?.setDropUnauthorizedLog(0)
// LogProducerConfig.debug()
// let selfPointer = unsafeBitCast(self, to: UnsafeMutableRawPointer.self)
client = LogProducerClient(logProducerConfig: config, callback: { configName, resultCode, logBytes, compressedBytes, reqId, message, rawBuffer, userParams in
guard let pointer = userParams else {
return
}
let self_p = unsafeBitCast(pointer, to: OtlpSLSSpanExporter.self)
if LOG_PRODUCER_PARAMETERS_INVALID == resultCode {
if let workspace = ConfigurationManager.shared.workspaceProvider?(self_p.scope) {
self_p.config?.setEndpoint(workspace.endpoint)
self_p.config?.setProject(workspace.project)
self_p.config?.setLogstore(workspace.instanceId)
}
if let accessKey = ConfigurationManager.shared.accessKeyProvider?(self_p.scope) {
self_p.config?.setAccessKeyId(accessKey.accessKeyId)
self_p.config?.setAccessKeySecret(accessKey.accessKeySecret)
if let token = accessKey.accessKeySecuritToken, !token.isEmpty {
self_p.config?.resetSecurityToken(
accessKey.accessKeyId,
accessKeySecret: accessKey.accessKeySecret,
securityToken: accessKey.accessKeySecuritToken
)
}
}
} else if LOG_PRODUCER_SEND_UNAUTHORIZED == resultCode {
if let accessKey = ConfigurationManager.shared.accessKeyProvider?(self_p.scope) {
self_p.config?.setAccessKeyId(accessKey.accessKeyId)
self_p.config?.setAccessKeySecret(accessKey.accessKeySecret)
if let token = accessKey.accessKeySecuritToken, !token.isEmpty {
self_p.config?.resetSecurityToken(
accessKey.accessKeyId,
accessKeySecret: accessKey.accessKeySecret,
securityToken: accessKey.accessKeySecuritToken
)
}
}
}
}, userparams: self)
}