Ejemplo n.º 1
0
        Task <RouterState> fromCloud(CancellationToken cancellationToken)
        {
            string url = string.Format(routerUrl, AVClient.ApplicationId);

            return(AVClient.RequestAsync(uri: new Uri(url),
                                         method: "GET",
                                         headers: null,
                                         data: null,
                                         contentType: "",
                                         cancellationToken: CancellationToken.None).ContinueWith <RouterState>(t =>
            {
                var httpStatus = (int)t.Result.Item1;
                if (httpStatus != 200)
                {
                    throw new AVException(AVException.ErrorCode.ConnectionFailed, "can not reach router.", null);
                }
                try
                {
                    var result = t.Result.Item2;

                    var routerState = AVClient.DeserializeJsonString(result);
                    var expire = DateTime.Now.AddSeconds(long.Parse(routerState["ttl"].ToString()));
                    routerState["expire"] = expire.UnixTimeStampSeconds();

                    AVClient.ApplicationSettings["RouterState"] = Json.Encode(routerState);

                    var routerStateObj = new RouterState()
                    {
                        groupId = routerState["groupId"] as string,
                        server = routerState["server"] as string,
                        secondary = routerState["secondary"] as string,
                        ttl = long.Parse(routerState["ttl"].ToString()),
                    };

                    return routerStateObj;
                }
                catch (Exception exception)
                {
                    return null;
                }
            }));
        }
Ejemplo n.º 2
0
        Task <RouterState> readCache(CancellationToken cancellationToken)
        {
            try
            {
                var cache = AVClient.DecodeQueryString(AVClient.ApplicationSettings["RouterState"] as string);

                var routerState = new RouterState()
                {
                    groupId   = cache["groupId"] as string,
                    server    = cache["server"] as string,
                    secondary = cache["secondary"] as string,
                    ttl       = long.Parse(cache["ttl"]),
                };

                return(Task.FromResult <RouterState>(routerState));
            }
            catch
            {
                return(Task.FromResult <RouterState>(null));
            }
        }