int32_t S3_HLS_SDK_Initialize()

in S3_HLS_SDK.c [154:215]


int32_t S3_HLS_SDK_Initialize(uint32_t buffer_size, char* region, char* bucket, char* prefix, char* endpint) {
    SDK_DEBUG("SDK Init!\n");
    
    CURLcode res = curl_global_init(CURL_GLOBAL_DEFAULT);
    
    /* Check for errors */ 
    if(res != CURLE_OK) {
        SDK_DEBUG("CURL Init Failed!\n");
        goto l_cleanup_curl;
    }
    
    if(0 !=sem_init(&s3_hls_put_send_sem, 0 ,0)) {
        SDK_DEBUG("Semaphore Init Failed!\n");
        goto l_cleanup_curl;
    }
    
    SDK_DEBUG("SDK Buffer Init!\n");
    s3_hls_buffer_ctx = S3_HLS_Initialize_Buffer(buffer_size, S3_HLS_Add_Buffer_To_Queue);
    if(NULL == s3_hls_buffer_ctx) {
        SDK_DEBUG("Buffer Init Failed!\n");
        goto l_cleanup_curl;
    }
        
    SDK_DEBUG("SDK S3 Client Init!\n");
    // initialize S3 upload process
    s3_client = S3_HLS_Client_Initialize(region, bucket, endpint);
    if(NULL == s3_client) {
        SDK_DEBUG("S3 Client Init Failed!\n");
        goto l_finalize_buffer;
    }
    
    SDK_DEBUG("Upload Thread Init!\n");
    s3_hls_worker_thread = S3_HLS_Upload_Thread_Initialize(S3_HLS_Upload_Queue_Item);
    if(NULL == s3_hls_worker_thread) {
        SDK_DEBUG("Upload Thread Init Failed!\n");
        goto l_finalize_client;
    }
    
    s3_hls_queue_ctx = S3_HLS_Initialize_Queue();
    if(NULL == s3_hls_queue_ctx) {
        SDK_DEBUG("Upload Queue Init Failed!\n");
        goto l_finalize_client;
    }

	object_prefix = prefix;

    SDK_DEBUG("SDK Init Finished!\n");
    return S3_HLS_OK;
    
l_finalize_client:
    S3_HLS_Client_Finalize(s3_client);
    s3_client = NULL;

l_finalize_buffer:
    S3_HLS_Finalize_Buffer(s3_hls_buffer_ctx);
    s3_hls_buffer_ctx = NULL;
    
l_cleanup_curl:
    curl_global_cleanup();

    return S3_HLS_UNKNOWN_INTERNAL_ERROR;
}