//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
//  
using System;
using System.Threading;
using System.Globalization;
using System.Diagnostics;

namespace CLRUnleashed.Remoting
{
	/// <summary>
	/// Podsumowanie dla TimeObject.
	/// </summary>
	public class TimeObject : MarshalByRefObject
	{
		public TimeObject()
		{
			Console.WriteLine("TimeObject activated");
			dateCount = 0;
			timeCount = 0;
		}
		public TimeObject(string culture)
		{
			Console.WriteLine("TimeObject({0}) został aktywowany", culture);
			
			try
			{
				ci = new CultureInfo(culture);
			}
			catch(ArgumentException e)
			{
				Debug.WriteLine(e);
				ci = null;
			}

			dateCount = 0;
			timeCount = 0;
		}
		public string Time
		{
			get
			{
				timeCount++;
				if(ci != null)
					Thread.CurrentThread.CurrentCulture = ci;
				return DateTime.Now.ToLongTimeString();
			}
		}
		public string Date
		{
			get
			{
				dateCount++;
				if(ci != null)
					Thread.CurrentThread.CurrentCulture = ci;
				return DateTime.Now.ToLongDateString();
			}
		}
		public int DateCount
		{
			get
			{
				return dateCount;
			}
		}
		public int TimeCount
		{
			get
			{
				return timeCount;
			}
		}

		private int dateCount;
		private int timeCount;
		private CultureInfo ci = null;
	}
}
