using System.Threading.Tasks;
using PipServices3.Commons.Config;
using PipServices3.Commons.Run;


    public class MyComponentA: IConfigurable, IOpenable
    {
        private bool consoleLog = true;

        protected DataDogCounters counters;

        public MyComponentA(DataDogCounters counters)
        {
            this.counters = counters;
            if (consoleLog)
                Console.WriteLine("MyComponentA has been created.");
        }

        public void Configure(ConfigParams config)
        {
            counters.Configure(config);
        }

        public DataDogCounters GetCounters()
        {
            return counters;
        }

        public bool IsOpen()
        {
            return counters.IsOpen();
        }

        public async Task OpenAsync(string correlationId)
        {
            await counters.OpenAsync(correlationId);
        }

        public async Task CloseAsync(string correlationId)
        {
            await counters.CloseAsync(correlationId);
        }

        public void MyMethod()
        {
            counters.Increment("mycomponent.mymethod.calls", 1);
            var timing = counters.BeginTiming("mycomponent.mymethod.exec_time");

            try
            {
                if (consoleLog)
                {
                    Console.WriteLine("Hola amigo");
                    Console.WriteLine("Hola amigoBonjour mon ami");
                }
            } finally
            {
                timing.EndTiming();
            }

            counters.Dump();
        }
    }