Esempio n. 1
0
        public async Task <LWTSD.DataController.DataPage> ReadData(int Page = 0)
        {
            if (RequestedResources.Count() == 0)
            {
                throw new InvalidOperationException("No requested resources");
            }

            if (KnownSchema != null)
            {
                foreach (var rkey in RequestedResources.Keys)
                {
                    if (!KnownSchema.Resources.ContainsKey(rkey))
                    {
                        KnownSchema   = null;
                        ActiveSession = null;
                        break;
                    }
                }
            }

            if (ActiveSession == null || ActiveSession.SessionEndsAtUTC < DateTime.UtcNow.AddSeconds(15))
            {
                await RequestNewSession(new TimeSpan(1, 0, 0));
            }



            return(await LowlevelDataController.ReadData(KnownSchema,
                                                         RequestedResources.Keys.ToList(),
                                                         ActiveSession.ID));
        }
Esempio n. 2
0
            public ControllerTest()
            {
                Console.WriteLine("Connecting.");

                Connection = new Connection("baldershage-stefan.clayster.com",
                                            5222,
                                            new JID("[email protected]/controllertest"),
                                            "test1234",
                                            null,
                                            true);
                Connection.OnConnectionStateChanged += OnConnectionStateChanged;
                Connection.Connect();

                while (Client == null && !Quit)
                {
                    System.Threading.Thread.Sleep(100);
                }
                Console.WriteLine("Requesting schema");
                var SchemaWaiter = Client.GetSchema(0, "dummysession");

                Console.WriteLine("Waiting for result");
                SchemaWaiter.Wait();
                Console.WriteLine("Got Schema");
                LWTSD.SimplifiedSchema Schema = SchemaWaiter.Result;
                //Console.WriteLine(Schema.GetSerializedElement(0, 1000).ToString());

                Console.WriteLine("Requesting data");
                List <LWTSD.ResourcePath> ReadResources = new List <LWTSD.ResourcePath>();

                foreach (var res in Schema.Resources.Values)
                {
                    if (!res.SupportsRead)
                    {
                        continue;
                    }

                    Console.WriteLine("adding resource to get: " + res.Path);
                    ReadResources.Add(res.Path);
                }

                var DataWaiter = Client.ReadData(Schema, ReadResources, "dummysession", 0);

                Console.WriteLine("Waiting for result");
                DataWaiter.Wait();
                Console.WriteLine("Got data.");
                LWTSD.DataController.DataPage Page = DataWaiter.Result;
                if (Page.Data == null)
                {
                    throw new Exception("Data is null");
                }
                DumpDataToConsole(Page);

                Console.WriteLine("Subscriping to data");
                var SubscriptionAwaiter = Client.SubscribeToData(Schema, ReadResources,
                                                                 (Tuple <string, LWTSD.DataController.DataPage> obj) =>
                {
                    Console.WriteLine("Got new data on subscription " + obj.Item1);
                    DumpDataToConsole(obj.Item2);
                    GotSubscriptionData = true;
                },
                                                                 (string obj) =>
                {
                    Console.WriteLine("Subscription cancelled with id {0}", obj);
                }
                                                                 ,
                                                                 "dummysession");

                Console.WriteLine("Waiting for subscription");
                SubscriptionAwaiter.Wait();
                Console.WriteLine("Got subscription: " + SubscriptionAwaiter.Result);

                RequestWrite = true;
                while (!GotSubscriptionData && !Quit)
                {
                    Console.WriteLine("Waiting for subscriptiondata");
                    Thread.Sleep(100);
                }
            }