public async Task TestSubscription() { // discover available endpoints of server. var getEndpointsRequest = new GetEndpointsRequest { EndpointUrl = this.endpointUrl, ProfileUris = new[] { TransportProfileUris.UaTcpTransport } }; Console.WriteLine($"Discovering endpoints of '{getEndpointsRequest.EndpointUrl}'."); var getEndpointsResponse = await UaTcpDiscoveryClient.GetEndpointsAsync(getEndpointsRequest); var selectedEndpoint = getEndpointsResponse.Endpoints.OrderBy(e => e.SecurityLevel).Last(); var session = new UaTcpSessionClient( this.localDescription, this.certificateStore, ed => Task.FromResult <IUserIdentity>(new UserNameIdentity("root", "secret")), selectedEndpoint, loggerFactory: this.loggerFactory); Console.WriteLine($"Creating session with endpoint '{session.RemoteEndpoint.EndpointUrl}'."); Console.WriteLine($"SecurityPolicy: '{session.RemoteEndpoint.SecurityPolicyUri}'."); Console.WriteLine($"SecurityMode: '{session.RemoteEndpoint.SecurityMode}'."); var sub = new MySubscription(); session.Subscribe(sub); Console.WriteLine($"Created subscription."); await Task.Delay(5000); session.Dispose(); Assert.IsTrue(sub.CurrentTime != DateTime.MinValue, "CurrentTime"); Assert.IsTrue(sub.CurrentTimeAsDataValue != null, "CurrentTimeAsDataValue"); Assert.IsTrue(sub.CurrentTimeQueue.Count > 0, "CurrentTimeQueue"); }
public MainViewModel(UaTcpSessionClient session) { this.session = session; session.Subscribe(this); }