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)); }
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); } }