示例#1
0
 public void UpdateImage(string clientID, byte[] image)
 {
     lock (_images)
     {
         ImageStoreDataItem di;
         if (_images.TryGetValue(clientID, out di))
         {
             di.Image = image;
         }
         else
         {
             di                = new ImageStoreDataItem();
             di.Image          = image;
             _images[clientID] = di;
         }
     }
 }
示例#2
0
        public int GetUpdateInterval(string clientID)
        {
            lock (_images)
            {
                ImageStoreDataItem di;
                if (_images.TryGetValue(clientID, out di))
                {
                    // Ne reads lately. Use default value.
                    if (di.LastImageRead[0] == DateTime.MinValue || di.LastImageRead[0] == DateTime.MinValue)
                    {
                        return(DefaultUploadInterval);
                    }

                    // Calculate difference of last to reads.
                    int result = (int)di.LastImageRead[0].Subtract(di.LastImageRead[1]).TotalMilliseconds;

                    // Limit to 500ms
                    if (result < 500)
                    {
                        result = 500;
                    }

                    // Last read longer than default upload rate. Return to default values.
                    if (DateTime.UtcNow.Subtract(di.LastImageRead[0]).TotalMilliseconds > DefaultUploadInterval)
                    {
                        di.LastImageRead[0] = DateTime.MinValue;
                        di.LastImageRead[0] = DateTime.MinValue;
                    }

                    return(result);
                }
                else
                {
                    di                = new ImageStoreDataItem();
                    di.Image          = null;
                    _images[clientID] = di;

                    return(DefaultUploadInterval);
                }
            }
        }