func initLogProducer()

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)
    }