Exemple #1
0
        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();
 }
Exemple #5
0
    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);
    }
Exemple #6
0
        protected override void OnStarted()
        {
            pubsubClient = new PubSubClient(this)
            {
                Logger = this.Logger
            };

            base.OnStarted();
        }
Exemple #7
0
        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;
        }
Exemple #9
0
        public override void Dispose()
        {
            if (this.pubSubClient != null)
            {
                this.pubSubClient.Dispose();
                this.pubSubClient = null;
            }

            base.Dispose();
        }
Exemple #10
0
        /// <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;
        }
Exemple #11
0
        public MainWindow(MainViewModel viewModel)
        {
            InitializeComponent();
            _viewModel  = viewModel;
            DataContext = _viewModel;

            _SyncContext = SynchronizationContext.Current;

            _Proxy = new PubSubClient(new InstanceContext(this));

            // lstStates.ItemsSource = _Subscriptions;
        }
Exemple #12
0
        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();
        }
Exemple #15
0
        /// <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;
        }
Exemple #18
0
        /// <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();
        }
Exemple #19
0
        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);
 }
Exemple #27
0
        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();
        }
Exemple #28
0
        /// <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();
 }
Exemple #31
0
        /// <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()));
        }
Exemple #32
0
 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();
 }