Example #1
0
        private static WatermarkMap ParseWatermarks(string rawstring)
        {
            WatermarkMap empty = WatermarkMap.Empty;

            string[] array = rawstring.Split(new string[]
            {
                ";"
            }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string text in array)
            {
                string[] array3 = text.Split(new string[]
                {
                    ":"
                }, StringSplitOptions.None);
                if (array3.Length != 2)
                {
                    throw new FormatException();
                }
                Guid key   = new Guid(array3[0]);
                long value = long.Parse(array3[1]);
                if (!empty.ContainsKey(key))
                {
                    empty.Add(key, value);
                }
            }
            return(empty);
        }
Example #2
0
        private static WatermarkMap FallbackWatermarks(WatermarkMap originalWatermarks, Guid originalInvocationId, Guid newInvocationId)
        {
            WatermarkMap watermarkMap = originalWatermarks;

            if (originalInvocationId != newInvocationId)
            {
                watermarkMap = WatermarkMap.Empty;
                long value = 0L;
                if (originalWatermarks.TryGetValue(newInvocationId, out value))
                {
                    watermarkMap.Add(newInvocationId, value);
                }
            }
            return(watermarkMap);
        }
Example #3
0
 public static bool TryFromBytes(byte[] cookieData, out SyncCookie cookie, out Exception ex)
 {
     ex     = null;
     cookie = null;
     if (cookieData == null)
     {
         ex = new ArgumentNullException("cookieData");
         return(false);
     }
     try
     {
         string   @string = Encoding.UTF8.GetString(cookieData);
         string[] array   = @string.Split(new string[]
         {
             SyncCookie.Delimiter
         }, StringSplitOptions.None);
         if (array.Length < 1)
         {
             ex = new InvalidCookieException();
             return(false);
         }
         int num = int.Parse(array[0]);
         if (num != 1 && num != 2 && num != 3)
         {
             ex = new CookieVersionUnsupportedException(num);
             return(false);
         }
         if (((num == 1 || num == 2) && array.Length != 5) || (num == 3 && array.Length != 6))
         {
             ex = new InvalidCookieException();
             return(false);
         }
         Guid         guid         = new Guid(array[1]);
         WatermarkMap watermarkMap = WatermarkMap.Empty;
         if (num == 1)
         {
             long value = long.Parse(array[2]);
             watermarkMap.Add(guid, value);
         }
         else
         {
             watermarkMap = WatermarkMap.Parse(array[2]);
         }
         WatermarkMap watermarkMap2 = WatermarkMap.Empty;
         if (num == 1)
         {
             long value2 = long.Parse(array[3]);
             watermarkMap2.Add(guid, value2);
         }
         else
         {
             watermarkMap2 = WatermarkMap.Parse(array[3]);
         }
         byte[] pageCookie = null;
         if (!string.IsNullOrEmpty(array[4]))
         {
             pageCookie = Convert.FromBase64String(array[4]);
         }
         byte[] pageCookie2 = null;
         if (num == 3 && !string.IsNullOrEmpty(array[5]))
         {
             pageCookie2 = Convert.FromBase64String(array[5]);
         }
         cookie = new SyncCookie(guid, watermarkMap, watermarkMap2, pageCookie, pageCookie2);
     }
     catch (DecoderFallbackException innerException)
     {
         ex = new InvalidCookieException(innerException);
         return(false);
     }
     catch (FormatException innerException2)
     {
         ex = new InvalidCookieException(innerException2);
         return(false);
     }
     catch (OverflowException innerException3)
     {
         ex = new InvalidCookieException(innerException3);
         return(false);
     }
     return(true);
 }