/// <summary>
        /// Handles sync request
        /// </summary>
        /// <param name="syncRequest">Sync Request</param>
        public void Handle(ISyncRequest syncRequest)
        {
            SyncDescriptor syncDescriptor = resourceManager.GetSyncDescriptor(syncRequest.GetName());

            long requestTimestamp = 0;

            if (requestTimestamps.ContainsKey(syncRequest))
            {
                requestTimestamp = requestTimestamps[syncRequest];
            }

            if (requestTimestamp <= 0)
            {
                syncWorker.AddRequest(syncRequest);
                requestTimestamps.Add(syncRequest, DateTime.Now.Ticks);

                return;
            }


            long syncInterval         = syncDescriptor.GetSyncInterval();
            long lastRefreshTimestamp = requestTimestamps[syncRequest];
            long currentTimestamp     = DateTime.Now.Ticks;

            long timeDifference = lastRefreshTimestamp + syncInterval;

            if (timeDifference < currentTimestamp)
            {
                syncWorker.AddRequest(syncRequest);
                requestTimestamps.Add(syncRequest, DateTime.Now.Ticks);
            }
        }