int32_t S3_HLS_Release_Queue()

in S3_HLS_Queue.c [111:144]


int32_t S3_HLS_Release_Queue(S3_HLS_QUEUE_CTX* ctx) {
    if(NULL == ctx) {
        QUEUE_DEBUG("[Release]Invalid Queue Context!\n");
        return S3_HLS_INVALID_PARAMETER;
    }
    
    QUEUE_DEBUG("[Release]Locking queue!\n");
	int32_t ret = pthread_mutex_lock(&ctx->s3_hls_queue_lock);
    if(0 != ret) {
        // unknown error
        QUEUE_DEBUG("[Release]Get Queue Lock Failed! %d\n", ret);
        return ret;
    }
    
    if(ctx->queue_length > 0) {
        ctx->queue_pos ++;
        ctx->queue_length--;
        QUEUE_DEBUG("Released queue! length: %d\n", ctx->queue_length);
        
        if(S3_HLS_MAX_PARTS_IN_BUFFER == ctx->queue_pos)
            ctx->queue_pos = 0;
    } else {
        QUEUE_DEBUG("Queue is empty cannot release!\n");
    }
    
    QUEUE_DEBUG("[Release]Unlocking queue!\n");
    ret = pthread_mutex_unlock(&ctx->s3_hls_queue_lock);
    if(0 != ret) {
        // unknown error
        QUEUE_DEBUG("[Release]Get Queue Unlock Failed! %d\n", ret);
        return ret;
    }
    return S3_HLS_OK;
}