static async Task Main(string[] args) { await using var client = new PubSubClient(); await client.ConnectAsync(new IPEndPoint(IPAddress.Loopback, 8000)); var topics = new string[] { "topic1", "topic2", "topic3" }; foreach (var topic in topics) { await client.SubscribeAsync(topic, (t, data) => { Console.WriteLine($"[Client][{t}] <- " + Encoding.UTF8.GetString(data.Span)); return(Task.CompletedTask); }); } var index = 0; while (true) { var line = Console.ReadLine(); if (line == null) { break; } index = (index + 1) % topics.Length; await client.PublishAsync(topics[index], Encoding.UTF8.GetBytes(line)); } }
public SwitchView(long gid, PubSubClient pubSub) : base(gid, pubSub) { properties = new PropertiesView(() => io, pubSub); measurements = new MeasurementsView(() => io == null ? (IEnumerable <long>) new long[0] : io.Measurements, pubSub); switchState = new SwitchStateView(() => io, pubSub); panel = new StackPanel(); }
public void Close() { try { if (m_client != null) { try { m_client.SubscribeAsync(m_subject, null); } catch { } m_client.CloseAsync(); m_client = null; if (Closed != null) { Closed(); } } } catch { //LogActivityMessage(MessageLevelsEnum.Error, "Exception closing notification channel. " + excp.Message); } }
public MaybeElementView(long gid, PubSubClient pubSub) : base(gid, pubSub) { dmsTypeToModelCodeMap = ModelResourcesDesc.GetTypeToModelCodeMap(); elementView = InitView(); nullView = new NullView(); panel = new StackPanel(); }
public bool ConnectToServer(string ipaddr, string port) { this.comSvcIPaddr = ipaddr; this.comSvcPort = GameConstants.DefaultComServicePort; if ((port != null) && (port != "")) { this.comSvcPort = port; } if (((ipaddr == "127.0.0.1") || (ipaddr == "localhost")) && (localServer == false)) { Debug.Log("Cannot connect to local com service unless you are the host client"); return(false); } if (psc == null) { psc = new PubSubClient(ipaddr, comSvcPort, GetPlayerName()); } connectedToPSS = psc.ClientConnect(); if (connectedToPSS == false) { Debug.LogError("Error connecting to PubSubService at Host."); } return(connectedToPSS); }
protected override void OnStarted() { pubsubClient = new PubSubClient(this) { Logger = this.Logger }; base.OnStarted(); }
public MainWindow() { InitializeComponent(); this._proxyPubSub = new PubSubClient(new InstanceContext(this)); this._proxyStock = new StockClient(); this._syncContext = SynchronizationContext.Current; this.LbShare.ItemsSource = this.Buyers; }
public MainWindow() { InitializeComponent(); _SyncContext = SynchronizationContext.Current; _Proxy = new PubSubClient(new InstanceContext(this)); lstStates.ItemsSource = _Subscriptions; }
public override void Dispose() { if (this.pubSubClient != null) { this.pubSubClient.Dispose(); this.pubSubClient = null; } base.Dispose(); }
/// <summary> /// Client managing the Personal Eventing Protocol (XEP-0163). /// https://xmpp.org/extensions/xep-0163.html /// </summary> /// <param name="Client">XMPP Client to use.</param> /// <param name="PubSubComponentAddress">Default Publish/Subscribe component address.</param> public PepClient(XmppClient Client, string PubSubComponentAddress) : base(Client) { this.pubSubComponentAddress = PubSubComponentAddress; this.pubSubClient = new PubSubClient(Client, this.pubSubComponentAddress); this.hasPubSubComponent = !string.IsNullOrEmpty(this.pubSubComponentAddress); this.pubSubClient.ItemNotification += PubSubClient_ItemNotification; this.PubSubClient.ItemRetracted += PubSubClient_ItemRetracted; }
public MainWindow(MainViewModel viewModel) { InitializeComponent(); _viewModel = viewModel; DataContext = _viewModel; _SyncContext = SynchronizationContext.Current; _Proxy = new PubSubClient(new InstanceContext(this)); // lstStates.ItemsSource = _Subscriptions; }
public PubSubService(TreeNode Parent, string JID, string Name, string Node, Dictionary <string, bool> Features, PubSubClient PubSubClient) : base(Parent, JID, Name, Node, Features) { this.SupportsAccessAuthorize = Features.ContainsKey(PubSubClient.NamespacePubSubAccessAuthorize); this.SupportsAccessOpen = Features.ContainsKey(PubSubClient.NamespacePubSubAccessOpen); this.SupportsAccessPresence = Features.ContainsKey(PubSubClient.NamespacePubSubAccessPresence); this.SupportsAccessRoster = Features.ContainsKey(PubSubClient.NamespacePubSubAccessRoster); this.SupportsAccessWhitelist = Features.ContainsKey(PubSubClient.NamespacePubSubAccessWhitelist); this.SupportsCollections = Features.ContainsKey(PubSubClient.NamespacePubSubCollections); this.SupportsNodeConfiguration = Features.ContainsKey(PubSubClient.NamespacePubSubNodeConfiguration); this.SupportsCreateAndConfigure = Features.ContainsKey(PubSubClient.NamespacePubSubCreateAndConfigure); this.SupportsCreateNodes = Features.ContainsKey(PubSubClient.NamespacePubSubCreateNodes); this.SupportsDeleteItems = Features.ContainsKey(PubSubClient.NamespacePubSubDeleteItems); this.SupportsDeleteNodes = Features.ContainsKey(PubSubClient.NamespacePubSubDeleteNodes); this.SupportsItemIds = Features.ContainsKey(PubSubClient.NamespacePubSubItemIds); this.SupportsLastPublished = Features.ContainsKey(PubSubClient.NamespacePubSubLastPublished); this.SupportsLeasedSubscription = Features.ContainsKey(PubSubClient.NamespacePubSubLeasedSubscription); this.SupportsManageSubscriptions = Features.ContainsKey(PubSubClient.NamespacePubSubManageSubscriptions); this.SupportsemberAffiliation = Features.ContainsKey(PubSubClient.NamespacePubSubemberAffiliation); this.SupportsMetaData = Features.ContainsKey(PubSubClient.NamespacePubSubMetaData); this.SupportsModifyAffiliations = Features.ContainsKey(PubSubClient.NamespacePubSubModifyAffiliations); this.SupportsMultiCollecton = Features.ContainsKey(PubSubClient.NamespacePubSubMultiCollecton); this.SupportsMultiItems = Features.ContainsKey(PubSubClient.NamespacePubSubMultiItems); this.SupportsOutcastAffiliation = Features.ContainsKey(PubSubClient.NamespacePubSubOutcastAffiliation); this.SupportsPersistentItems = Features.ContainsKey(PubSubClient.NamespacePubSubPersistentItems); this.SupportsPresenceSubscribe = Features.ContainsKey(PubSubClient.NamespacePubSubPresenceSubscribe); this.SupportsPublish = Features.ContainsKey(PubSubClient.NamespacePubSubPublish); this.SupportsPublishOnlyAffiliation = Features.ContainsKey(PubSubClient.NamespacePubSubPublishOnlyAffiliation); this.SupportsPublisheAffiliation = Features.ContainsKey(PubSubClient.NamespacePubSubPublisheAffiliation); this.SupportsPurgeNodes = Features.ContainsKey(PubSubClient.NamespacePubSubPurgeNodes); this.SupportsRetractItems = Features.ContainsKey(PubSubClient.NamespacePubSubRetractItems); this.SupportsRetrieveAffiliations = Features.ContainsKey(PubSubClient.NamespacePubSubRetrieveAffiliations); this.SupportsRetrieveDefault = Features.ContainsKey(PubSubClient.NamespacePubSubRetrieveDefault); this.SupportsRetrieveDefaultSub = Features.ContainsKey(PubSubClient.NamespacePubSubRetrieveDefaultSub); this.SupportsRetrieveItems = Features.ContainsKey(PubSubClient.NamespacePubSubRetrieveItems); this.SupportsRetrieveSubscriptions = Features.ContainsKey(PubSubClient.NamespacePubSubRetrieveSubscriptions); this.SupportsSubscribe = Features.ContainsKey(PubSubClient.NamespacePubSubSubscribe); this.SupportsSubscriptionOptions = Features.ContainsKey(PubSubClient.NamespacePubSubSubscriptionOptions); this.SupportsSubscriptionNotifications = Features.ContainsKey(PubSubClient.NamespacePubSubSubscriptionNotifications); this.pubSubClient = PubSubClient; this.children = new SortedDictionary <string, TreeNode>() { { string.Empty, new Loading(this) } }; this.pubSubClient.ItemNotification += PubSubClient_ItemNotification; this.pubSubClient.ItemRetracted += PubSubClient_ItemRetracted; this.pubSubClient.NodePurged += PubSubClient_NodePurged; this.pubSubClient.SubscriptionRequest += PubSubClient_SubscriptionRequest; }
public PropertiesView(Func <IdentifiedObject> ioGetter, PubSubClient pubSub) : base() { this.ioGetter = ioGetter; this.pubSub = pubSub; typeToProps = ModelResourcesDesc.GetTypeToPropertiesMap(); panel = new StackPanel(); StackPanel propPanel = new StackPanel(); Border border = new Border() { BorderThickness = new Thickness(1), BorderBrush = Brushes.LightGray, Margin = new Thickness(1), Padding = new Thickness(1) }; Grid propsGrid = new Grid(); propsGrid.ColumnDefinitions.Add(new ColumnDefinition() { MinWidth = 0 }); propsGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(5) }); propsGrid.ColumnDefinitions.Add(new ColumnDefinition() { MinWidth = 0 }); propsGrid.RowDefinitions.Add(new RowDefinition()); AddToGrid(propsGrid, new TextBlock() { Text = "Name", FontWeight = FontWeights.Bold, HorizontalAlignment = HorizontalAlignment.Center }, 0, 0); AddToGrid(propsGrid, new TextBlock() { Text = "Value", FontWeight = FontWeights.Bold, HorizontalAlignment = HorizontalAlignment.Center }, 0, 2); AddToGrid(propsGrid, new GridSplitter() { ResizeDirection = GridResizeDirection.Columns, HorizontalAlignment = HorizontalAlignment.Stretch, Background = Brushes.Black, Margin = new Thickness(0), Padding = new Thickness(0), ResizeBehavior = GridResizeBehavior.PreviousAndNext, BorderThickness = new Thickness(2, 0, 2, 0), BorderBrush = Brushes.Transparent }, 0, 1); border.Child = propsGrid; propPanel.Children.Add(border); panel.Children.Add(new TextBlock() { Margin = new Thickness(2), Text = "Properties", FontWeight = FontWeights.Bold, FontSize = 14 }); panel.Children.Add(propPanel); }
private void TesteCon() { var itemsFunc = new List <Mensagem>(); EndpointAddress address = new EndpointAddress(serverPubSubManagerEndPont); Binding binding = new NetTcpBinding(); PubSubClient proxy = new PubSubClient(new InstanceContext(this)); proxy.Open(); proxy.Subscribe("asdasd"); proxy.Close(); }
/// <summary> /// Creates a data form for subsmission. /// </summary> /// <param name="Client">XMPP Publish/Subscribe Client</param> /// <returns>Data form.</returns> public DataForm ToForm(PubSubClient Client) { List <Field> Fields = new List <Field>() { new HiddenField("FORM_TYPE", "http://jabber.org/protocol/pubsub#subscribe_options") }; if (this.deliver.HasValue) { Fields.Add(new BooleanField("pubsub#deliver", this.deliver.Value)); } if (this.digest.HasValue) { Fields.Add(new BooleanField("pubsub#digest", this.digest.Value)); } if (this.includeBody.HasValue) { Fields.Add(new BooleanField("pubsub#include_body", this.includeBody.Value)); } if (this.digestFrequencyMilliseconds.HasValue) { Fields.Add(new TextSingleField("pubsub#digest_frequency", this.digestFrequencyMilliseconds.Value.ToString())); } if (this.expires.HasValue) { Fields.Add(new TextSingleField("pubsub#expire", XML.Encode(this.expires.Value))); } if (this.type.HasValue) { Fields.Add(new TextSingleField("pubsub#subscription_type", this.type.Value.ToString())); } if (this.depth.HasValue) { Fields.Add(new TextSingleField("pubsub#subscription_depth", this.depth.Value == SubscriptonDepth.one ? "1" : this.depth.Value.ToString())); } return(new DataForm(Client.Client, FormType.Form, Client.Client.FullJID, Client.ComponentAddress, Fields.ToArray())); }
public void Subscribe(string subject, string filter) { PollingDuplexHttpSecurityMode securitymode = (m_serverURL.StartsWith("https")) ? PollingDuplexHttpSecurityMode.Transport : PollingDuplexHttpSecurityMode.None; SIPSorcerySecurityHeader securityHeader = new SIPSorcerySecurityHeader(m_authID); PullNotificationHeader notificationsHeader = new PullNotificationHeader(m_address.ToString()); SIPSorceryCustomHeader sipSorceryHeader = new SIPSorceryCustomHeader(new List<MessageHeader>() { securityHeader, notificationsHeader }); PollingDuplexCustomHeaderBinding notifierBinding = new PollingDuplexCustomHeaderBinding(sipSorceryHeader, securitymode) { UseTextEncoding = true }; m_client = new PubSubClient(notifierBinding, new EndpointAddress(new Uri(m_serverURL))); m_client.InnerChannel.Faulted += ChannelFaulted; m_client.InnerChannel.Closed += ChannelClosed; m_client.NotifyReceived += NotifyReceived; m_client.CloseSessionReceived += CloseSessionReceived; //DebugMessage_External("Polling Duplex client created, sessionID=" + m_client.InnerChannel.SessionId + ", timeout=" + m_client.InnerChannel.OperationTimeout.TotalSeconds + "s."); m_subject = subject; m_filter = filter; m_client.SubscribeAsync(m_subject, m_filter); }
public async Task Disconnect() { try { if (this.pubSub != null) { if (ChannelSession.AppSettings.DiagnosticLogging) { this.pubSub.OnSentOccurred -= PubSub_OnSentOccurred; this.pubSub.OnTextReceivedOccurred -= PubSub_OnTextReceivedOccurred; this.pubSub.OnMessageReceived -= PubSub_OnMessageReceived; } this.pubSub.OnReconnectReceived -= PubSub_OnReconnectReceived; this.pubSub.OnDisconnectOccurred -= PubSub_OnDisconnectOccurred; this.pubSub.OnPongReceived -= PubSub_OnPongReceived; this.pubSub.OnResponseReceived -= PubSub_OnResponseReceived; this.pubSub.OnWhisperReceived -= PubSub_OnWhisperReceived; this.pubSub.OnBitsV2Received -= PubSub_OnBitsV2Received; this.pubSub.OnSubscribedReceived -= PubSub_OnSubscribedReceived; this.pubSub.OnSubscriptionsGiftedReceived -= PubSub_OnSubscriptionsGiftedReceived; this.pubSub.OnChannelPointsRedeemed -= PubSub_OnChannelPointsRedeemed; await this.pubSub.Disconnect(); } if (this.cancellationTokenSource != null) { this.cancellationTokenSource.Cancel(); this.cancellationTokenSource = null; } } catch (Exception ex) { Logger.Log(ex); } this.IsConnected = false; this.pubSub = null; }
/// <summary> /// <see cref="IDisposable.Dispose"/> /// </summary> public override void Dispose() { if (this.pubSubClient != null) { this.pubSubClient.ItemNotification -= PubSubClient_ItemNotification; this.PubSubClient.ItemRetracted -= PubSubClient_ItemRetracted; this.pubSubClient.Dispose(); this.pubSubClient = null; } LinkedList <IPersonalEvent> ToUnregister = new LinkedList <IPersonalEvent>(); lock (this.handlers) { foreach (Type T in this.handlers.Keys) { try { ToUnregister.AddLast((IPersonalEvent)Activator.CreateInstance(T)); } catch (Exception ex) { Log.Critical(ex); } } this.handlers.Clear(); } foreach (IPersonalEvent PersonalEvent in ToUnregister) { this.client.UnregisterFeature(PersonalEvent.Namespace + "+notify"); } base.Dispose(); }
public MeasurementsView(Func <IEnumerable <long> > measurementsGetter, PubSubClient pubSub) : base() { this.measurementsGetter = measurementsGetter; this.pubSub = pubSub; panel = new StackPanel(); StackPanel measPanel = new StackPanel(); Border border = new Border() { BorderThickness = new Thickness(1), BorderBrush = Brushes.LightGray, Margin = new Thickness(1), Padding = new Thickness(1) }; Grid grid = new Grid(); grid.ColumnDefinitions.Add(new ColumnDefinition() { MinWidth = 0 }); grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(5) }); grid.ColumnDefinitions.Add(new ColumnDefinition() { MinWidth = 0 }); grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(5) }); grid.ColumnDefinitions.Add(new ColumnDefinition() { MinWidth = 0 }); grid.RowDefinitions.Add(new RowDefinition()); AddToGrid(grid, new TextBlock() { Text = "MRID", FontWeight = FontWeights.Bold, HorizontalAlignment = HorizontalAlignment.Center }, 0, 0); AddToGrid(grid, new TextBlock() { Text = "Type", FontWeight = FontWeights.Bold, HorizontalAlignment = HorizontalAlignment.Center }, 0, 2); AddToGrid(grid, new TextBlock() { Text = "Value", FontWeight = FontWeights.Bold, HorizontalAlignment = HorizontalAlignment.Center }, 0, 4); AddToGrid(grid, new GridSplitter() { ResizeDirection = GridResizeDirection.Columns, HorizontalAlignment = HorizontalAlignment.Stretch, Background = Brushes.Black, Margin = new Thickness(0), Padding = new Thickness(0), ResizeBehavior = GridResizeBehavior.PreviousAndNext, BorderThickness = new Thickness(2, 0, 2, 0), BorderBrush = Brushes.Transparent }, 0, 1); AddToGrid(grid, new GridSplitter() { ResizeDirection = GridResizeDirection.Columns, HorizontalAlignment = HorizontalAlignment.Stretch, Background = Brushes.Black, Margin = new Thickness(0), Padding = new Thickness(0), ResizeBehavior = GridResizeBehavior.PreviousAndNext, BorderThickness = new Thickness(2, 0, 2, 0), BorderBrush = Brushes.Transparent }, 0, 3); border.Child = grid; measPanel.Children.Add(border); panel.Children.Add(new TextBlock() { Margin = new Thickness(2), Text = "Measurements", FontWeight = FontWeights.Bold, FontSize = 14 }); panel.Children.Add(measPanel); }
public async Task <Result> Connect() { this.IsConnected = false; if (ChannelSession.TwitchUserConnection != null) { return(await this.AttemptConnect((Func <Task <Result> >)(async() => { try { this.pubSub = new PubSubClient(ChannelSession.TwitchUserConnection.Connection); if (ChannelSession.AppSettings.DiagnosticLogging) { this.pubSub.OnSentOccurred += PubSub_OnSentOccurred; this.pubSub.OnTextReceivedOccurred += PubSub_OnTextReceivedOccurred; this.pubSub.OnMessageReceived += PubSub_OnMessageReceived; } this.pubSub.OnReconnectReceived += PubSub_OnReconnectReceived; this.pubSub.OnDisconnectOccurred += PubSub_OnDisconnectOccurred; this.pubSub.OnPongReceived += PubSub_OnPongReceived; this.pubSub.OnResponseReceived += PubSub_OnResponseReceived; this.pubSub.OnWhisperReceived += PubSub_OnWhisperReceived; this.pubSub.OnBitsV2Received += PubSub_OnBitsV2Received; this.pubSub.OnSubscribedReceived += PubSub_OnSubscribedReceived; this.pubSub.OnSubscriptionsGiftedReceived += PubSub_OnSubscriptionsGiftedReceived; this.pubSub.OnChannelPointsRedeemed += PubSub_OnChannelPointsRedeemed; await this.pubSub.Connect(); await Task.Delay(1000); List <PubSubListenTopicModel> topics = new List <PubSubListenTopicModel>(); foreach (PubSubTopicsEnum topic in TwitchEventService.topicTypes) { topics.Add(new PubSubListenTopicModel(topic, (string)ChannelSession.TwitchUserNewAPI.id)); } await this.pubSub.Listen(topics); await Task.Delay(1000); await this.pubSub.Ping(); this.cancellationTokenSource = new CancellationTokenSource(); #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed AsyncRunner.RunAsyncBackground(this.BackgroundEventChecks, this.cancellationTokenSource.Token, 60000); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed this.IsConnected = true; return new Result(); } catch (Exception ex) { Logger.Log(ex); return new Result(ex); } }))); } return(new Result("Twitch connection has not been established")); }
public void Init_Test() { IPubSubClient client = new PubSubClient(); client.Should().NotBeNull(); }
public MeasurementView(long gid, PubSubClient pubSub) : base(gid, pubSub) { properties = new PropertiesView(() => io, pubSub); command = new CommandView(() => io, pubSub); panel = new StackPanel(); }
public PowerSystemResourceView(long gid, PubSubClient pubSub) : base(gid, pubSub) { properties = new PropertiesView(() => io, pubSub); measurements = new MeasurementsView(() => io == null ? (IEnumerable <long>) new long[0] : io.Measurements, pubSub); panel = new StackPanel(); }
public CommandView(Func <Measurement> measurementGetter, PubSubClient pubSub) : base() { this.measurementGetter = measurementGetter; this.pubSub = pubSub; panel = new StackPanel(); StackPanel measPanel = new StackPanel(); Border border = new Border() { BorderThickness = new Thickness(1), BorderBrush = Brushes.LightGray, Margin = new Thickness(1), Padding = new Thickness(1) }; Grid measGrid = new Grid(); measGrid.ColumnDefinitions.Add(new ColumnDefinition() { MinWidth = 0 }); measGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(5) }); measGrid.ColumnDefinitions.Add(new ColumnDefinition() { MinWidth = 0 }); measGrid.RowDefinitions.Add(new RowDefinition()); AddToGrid(measGrid, new GridSplitter() { ResizeDirection = GridResizeDirection.Columns, HorizontalAlignment = HorizontalAlignment.Stretch, Background = Brushes.Black, Margin = new Thickness(0), Padding = new Thickness(0), ResizeBehavior = GridResizeBehavior.PreviousAndNext, BorderThickness = new Thickness(2, 0, 2, 0), BorderBrush = Brushes.Transparent }, 0, 1); border.Child = measGrid; measPanel.Children.Add(border); panel.Children.Add(new TextBlock() { Margin = new Thickness(2), Text = "Values", FontWeight = FontWeights.Bold, FontSize = 14 }); panel.Children.Add(measPanel); StackPanel cmdPanel = new StackPanel(); border = new Border() { BorderThickness = new Thickness(1), BorderBrush = Brushes.LightGray, Margin = new Thickness(1), Padding = new Thickness(1) }; Grid cmdGrid = new Grid(); cmdGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(3, GridUnitType.Star) }); cmdGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); cmdGrid.RowDefinitions.Add(new RowDefinition()); TextBox tbCommand = new TextBox(); AddToGrid(cmdGrid, tbCommand, 0, 0); Button btCommand = new Button() { Content = "Execute" }; btCommand.Click += (x, y) => ExecuteCommand(tbCommand.Text); AddToGrid(cmdGrid, btCommand, 0, 1); border.Child = cmdGrid; cmdPanel.Children.Add(border); panel.Children.Add(new TextBlock() { Margin = new Thickness(2), Text = "Command", FontWeight = FontWeights.Bold, FontSize = 14 }); panel.Children.Add(cmdPanel); }
// Disconnect the PubSub client. public void DisconnectPubSubClient() { PubSubClient?.Disconnect(); }
private void Client_OnPubSubServiceConnected(object sender, EventArgs e) { // Not sure what this is for. PubSubClient?.SendTopics(AccessToken); }
public static void Main(string[] args) { Task.Run(async() => { try { Logger.SetLogLevel(LogLevel.Debug); Logger.LogOccurred += Logger_LogOccurred; System.Console.WriteLine("Connecting to Twitch..."); connection = TwitchConnection.ConnectViaLocalhostOAuthBrowser(clientID, clientSecret, scopes).Result; if (connection != null) { System.Console.WriteLine("Twitch connection successful!"); user = await connection.NewAPI.Users.GetCurrentUser(); if (user != null) { System.Console.WriteLine("Logged in as: " + user.display_name); System.Console.WriteLine("Connecting to PubSub..."); pubSub = new PubSubClient(connection); pubSub.OnDisconnectOccurred += PubSub_OnDisconnectOccurred; pubSub.OnSentOccurred += PubSub_OnSentOccurred; pubSub.OnReconnectReceived += PubSub_OnReconnectReceived; pubSub.OnResponseReceived += PubSub_OnResponseReceived; pubSub.OnMessageReceived += PubSub_OnMessageReceived; pubSub.OnWhisperReceived += PubSub_OnWhisperReceived; pubSub.OnPongReceived += PubSub_OnPongReceived; await pubSub.Connect(); await Task.Delay(1000); List <PubSubListenTopicModel> topics = new List <PubSubListenTopicModel>(); foreach (PubSubTopicsEnum topic in EnumHelper.GetEnumList <PubSubTopicsEnum>()) { topics.Add(new PubSubListenTopicModel(topic, user.id)); } await pubSub.Listen(topics); await Task.Delay(1000); await pubSub.Ping(); while (true) { System.Console.ReadLine(); } } } } catch (Exception ex) { System.Console.WriteLine(ex.ToString()); } }).Wait(); System.Console.ReadLine(); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { PubSubClient Extension = new PubSubClient(Client, this.componentAddress); Client.SetTag("PubSub", Extension); Extension.AffiliationNotification += (Sender, e) => { this.Model.ExternalEvent(Instance, "AffiliationNotification", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.ItemNotification += (Sender, e) => { this.Model.ExternalEvent(Instance, "ItemNotification", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.ItemRetracted += (Sender, e) => { this.Model.ExternalEvent(Instance, "ItemRetracted", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.NodePurged += (Sender, e) => { this.Model.ExternalEvent(Instance, "NodePurged", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.SubscriptionRequest += (Sender, e) => { this.Model.ExternalEvent(Instance, "SubscriptionRequest", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.SubscriptionStatusChanged += (Sender, e) => { this.Model.ExternalEvent(Instance, "SubscriptionStatusChanged", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.CompletedTask); }
public ElementView(long gid, PubSubClient pubSub) : base() { GID = gid; PubSub = pubSub; }
public IdentifiedObjectView(long gid, PubSubClient pubSub) : base(gid, pubSub) { properties = new PropertiesView(() => io, pubSub); panel = new StackPanel(); }
/// <summary> /// Creates a data form for subsmission. /// </summary> /// <param name="Client">XMPP Publish/Subscribe Client</param> /// <returns>Data form.</returns> public DataForm ToForm(PubSubClient Client) { List <Field> Fields = new List <Field>() { new HiddenField("FORM_TYPE", "http://jabber.org/protocol/pubsub#node_config") }; if (this.accessModel.HasValue) { Fields.Add(new ListSingleField("pubsub#access_model", this.accessModel.Value.ToString())); } if (!(this.bodyXsltUrl is null)) { Fields.Add(new TextSingleField("pubsub#body_xslt", this.bodyXsltUrl)); } if (!(this.collections is null)) { Fields.Add(new TextMultiField("pubsub#collection", this.collections)); } if (!(this.contact is null)) { Fields.Add(new TextMultiField("pubsub#contact", this.contact)); } if (!(this.dataFormXsltUrl is null)) { Fields.Add(new TextSingleField("pubsub#dataform_xslt", this.dataFormXsltUrl)); } if (this.deliverNotifications.HasValue) { Fields.Add(new BooleanField("pubsub#deliver_notifications", this.deliverNotifications.Value)); } if (this.deliverPayloads.HasValue) { Fields.Add(new BooleanField("pubsub#deliver_payloads", this.deliverPayloads.Value)); } if (this.itemReply.HasValue) { Fields.Add(new ListSingleField("pubsub#itemreply", this.itemReply.Value.ToString())); } if (this.childAssociationPolicy.HasValue) { Fields.Add(new ListSingleField("pubsub#children_association_policy", this.childAssociationPolicy.Value.ToString())); } if (!(this.childAssociationWhitelist is null)) { Fields.Add(new JidMultiField("pubsub#children_association_whitelist", this.childAssociationWhitelist)); } if (!(this.children is null)) { Fields.Add(new TextMultiField("pubsub#children", this.children)); } if (this.maxChildren.HasValue) { Fields.Add(new TextSingleField("pubsub#children_max", this.maxChildren.Value.ToString())); } if (this.maxItems.HasValue) { Fields.Add(new TextSingleField("pubsub#max_items", this.maxItems.Value.ToString())); } if (this.itemExpireSeconds.HasValue) { Fields.Add(new TextSingleField("pubsub#item_expire", this.itemExpireSeconds.Value.ToString())); } if (this.maxPayloadSize.HasValue) { Fields.Add(new TextSingleField("pubsub#max_payload_size", this.maxPayloadSize.Value.ToString())); } if (this.nodeType.HasValue) { Fields.Add(new ListSingleField("pubsub#node_type", this.nodeType.Value.ToString())); } if (this.notifyConfig.HasValue) { Fields.Add(new BooleanField("pubsub#notify_config", this.notifyConfig.Value)); } if (this.notifyDelete.HasValue) { Fields.Add(new BooleanField("pubsub#notify_delete", this.notifyDelete.Value)); } if (this.notifyRetract.HasValue) { Fields.Add(new BooleanField("pubsub#notify_retract", this.notifyRetract.Value)); } if (this.notifySubscriptions.HasValue) { Fields.Add(new BooleanField("pubsub#notify_sub", this.notifySubscriptions.Value)); } if (this.persistItems.HasValue) { Fields.Add(new BooleanField("pubsub#persist_items", this.persistItems.Value)); } if (this.presenceBasedDelivery.HasValue) { Fields.Add(new BooleanField("pubsub#presence_based_delivery", this.presenceBasedDelivery.Value)); } if (this.publisherModel.HasValue) { Fields.Add(new ListSingleField("pubsub#publish_model", this.publisherModel.ToString())); } if (!(this.replyRooms is null)) { Fields.Add(new JidMultiField("pubsub#replyroom", this.replyRooms)); } if (!(this.replyTo is null)) { Fields.Add(new JidMultiField("pubsub#replyto", this.replyTo)); } if (!(this.rosterGroupsAllowed is null)) { Fields.Add(new ListMultiField("pubsub#roster_groups_allowed", this.rosterGroupsAllowed)); } if (this.sendLastPublishedItem.HasValue) { Fields.Add(new ListSingleField("pubsub#send_last_published_item", this.sendLastPublishedItem.ToString())); } if (this.allowSubscriptions.HasValue) { Fields.Add(new BooleanField("pubsub#subscribe", this.allowSubscriptions.Value)); } if (!(this.title is null)) { Fields.Add(new TextSingleField("pubsub#title", this.title)); } if (!(this.description is null)) { Fields.Add(new TextMultiField("pubsub#description", this.description)); } if (!(this.payloadType is null)) { Fields.Add(new TextSingleField("pubsub#type", this.payloadType)); } if (this.notificationType.HasValue) { Fields.Add(new ListSingleField("pubsub#notification_type", this.notificationType.ToString())); } if (this.purgeOffline.HasValue) { Fields.Add(new BooleanField("pubsub#purge_offline", this.purgeOffline.Value)); } return(new DataForm(Client.Client, FormType.Form, Client.Client.FullJID, Client.ComponentAddress, Fields.ToArray())); }
public SwitchStateView(Func <Switch> switchGetter, PubSubClient pubSub) : base() { this.switchGetter = switchGetter; this.pubSub = pubSub; panel = new StackPanel(); }
public ConnectivityNodeView(long gid, PubSubClient pubSub) : base(gid, pubSub) { properties = new PropertiesView(() => io, pubSub); measurements = new MeasurementsView(GetMeasurements, pubSub); panel = new StackPanel(); }