using System;
using System.Collections.Generic;
using Alibabacloud.Rum.Unity;
using Alibabacloud.Rum.Unity.Rum;
using Alibabacloud.Rum.Unity.Worker;
using UnityEngine;

namespace Alibabacloud.Rum.Unity.Rum
{
    internal class AlibabacloudWorkerProxyRum : IAlibabacloudRum
    {
        private readonly AlibabacloudWorker _worker;
        private readonly IDateProvider _dateProvider;

        // private AlibabacloudPerformanceTracker _performanceTracker;

        public AlibabacloudWorkerProxyRum(AlibabacloudWorker worker, IDateProvider dateProvider = null)
        {
            _dateProvider = dateProvider ?? new DefaultDateProvider();
            _worker = worker;
        }
        
 
        public void ReportException(Exception ex)
        {
            
        }

        public void ReportResource(string type,
            string url,
            string method,
            int statusCode,
            string errorMessage,
            bool success,
            TraceContext traceContext,
            Measuring measuring)
        {
            
        }

        public void ReportEvent(string eventName, string group, double value,
            Dictionary<string, object> info)
        {
            
        }

        public void ReportLog(string logContent, string logName, string logLevel, string stackTrace, Dictionary<string, object> extraInfo)
        {
            
        }

        public void StartView(string key, string name, Dictionary<string, object> attributes)
        {
            var message = AlibabacloudRumProcessor.StartViewMessage.Create(
                _dateProvider.Now,
                key,
                name,
                attributes);
            _worker.AddMessage(message);
        }

        public void StopView(string key, Dictionary<string, object> attributes)
        {
            var message = AlibabacloudRumProcessor.StopViewMessage.Create(
                _dateProvider.Now,
                key,
                attributes);
            _worker.AddMessage(message);
        }
    }
}
