Пример #1
0
        public void Run()
        {
            var socketLock       = new object();
            var messagesConsumed = 0;

            using (var context = new Context())
                using (var brokerConsumeSocket = context.Socket(SocketType.REP))
                    using (var brokerAnnounceSocket = context.Socket(SocketType.REQ))
                        using (var scalerAnnounceSocket = context.Socket(SocketType.REP))
                        {
                            var receiver = new MulticastReceiver(_encoding);
                            var brokerIp = receiver.Receive("239.20.20.20", 8888);

                            brokerAnnounceSocket.Connect(string.Format("tcp://{0}:9999", brokerIp));
                            scalerAnnounceSocket.Bind(string.Format("tcp://*:7777"));
                            Console.WriteLine("Scaler connected!");
                            brokerConsumeSocket.Connect(string.Format("tcp://{0}:5560", brokerIp));
                            Console.WriteLine("Consumer connected!");

                            Action consumer = () => new MessageConsumer().Run(brokerConsumeSocket, socketLock, ref messagesConsumed);
                            Action monitor  = () => new QueueScaler().Run(brokerAnnounceSocket, _encoding, consumer, scalerAnnounceSocket, ref messagesConsumed);
                            Action alerter  = () => new EmailAlerter().Run(brokerAnnounceSocket, _encoding, ref messagesConsumed);

                            var tasks = new[]
                            {
                                Task.Run(monitor),
                                Task.Run(alerter)
                            };
                            Task.WaitAll(tasks);
                        }
            Console.WriteLine("Consumer done!");
            Console.WriteLine("Consumed {0} messages!", messagesConsumed);
            Console.ReadLine();
        }
        public AvailableServersViewModel(IClientConnector connector, IFCWebServiceProvider webServiceProvider, FCClientNetworkData clientNetworkData, MulticastReceiver multicastReceiver)
        {
            _clientConnector       = connector;
            _webServiceProvider    = webServiceProvider;
            _availableServers      = new List <ServerInfo>();
            this.ClientNetworkData = clientNetworkData;

            ClientNetworkData.AuthorizationToken = _webServiceProvider.Authorize("abc", "def").Result;
            _multicastReceiver = multicastReceiver;
        }
        public MulticastPlayer(MediaElement element, IDictionary<string, string> initParams, Logger logger)
            : base(element,logger.clone("McastPlayer"))
        {
            logger.info("c-tor");

            this.element = element;
            this.receiver = new MulticastReceiver(logger);
            this.receiver.BeginJoinGroup += receiver_BeginJoinGroup;
            this.receiver.EndJoinGroup += receiver_EndJoinGroup;
            this.receiver.ReceivedFirstPacket += receiver_ReceivedFirstPacket;

            this.receiver.setMediaPlayer(this.element);
            this.receiver.init(initParams);
            this.element.Volume = 1.0;
        }
 public MulticastPlayer(MediaElement element, string ip = null)
     : base(element)
 {
     this.element = element;
     this.receiver = new MulticastReceiver();
     this.receiver.BeginJoinGroup += receiver_BeginJoinGroup;
     this.receiver.EndJoinGroup += receiver_EndJoinGroup;
     this.receiver.ReceivedFirstPacket += receiver_ReceivedFirstPacket;
     this.receiver.setMediaPlayer(this.element);
     Dictionary<string, string> param = new Dictionary<string, string>();
     if (!String.IsNullOrEmpty(ip))
     {
         param.Add("streamAddress", ip);
     }
     this.receiver.init(param);
 }
Пример #5
0
        public MulticastPlayer(MediaElement element, string ip = null)
            : base(element)
        {
            this.element  = element;
            this.receiver = new MulticastReceiver();
            this.receiver.BeginJoinGroup      += receiver_BeginJoinGroup;
            this.receiver.EndJoinGroup        += receiver_EndJoinGroup;
            this.receiver.ReceivedFirstPacket += receiver_ReceivedFirstPacket;
            this.receiver.setMediaPlayer(this.element);
            Dictionary <string, string> param = new Dictionary <string, string>();

            if (!String.IsNullOrEmpty(ip))
            {
                param.Add("streamAddress", ip);
            }
            this.receiver.init(param);
        }
Пример #6
0
        public bool LoadConfig()
        {
            string configFile = GetConfigPath();

            if (!File.Exists(configFile))
            {
                MessageBox.Show(string.Format("Config file, '{0}', not found.", configFile),
                                "Miner Control: Config file missing", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            Dictionary <string, object> data;

            try
            {
                string pageString = File.ReadAllText(configFile);
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                data = serializer.DeserializeObject(pageString) as Dictionary <string, object>;
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(string.Format("Error loading config file: '{0}'.", ex.Message),
                                "Miner Control: Config file error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            try
            {
                LoadConfigGeneral(data["general"] as Dictionary <string, object>);
                LoadConfigAlgorithms(data["algorithms"] as object[]);
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Error processing general configuration: '{0}'.", ex.Message),
                                "Miner Control: Config file error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            try
            {
                LoadService(new NiceHashService(), data, "nicehash");
                LoadService(new WestHashService(), data, "westhash");
                LoadService(new TradeMyBitService(), data, "trademybit");
                LoadService(new YaampService(), data, "yaamp");
                LoadService(new WafflePoolService(), data, "wafflepool");
                LoadService(new LtcRabbitService(), data, "ltcrabbit");
                LoadService(new WePayBtcService(), data, "wepaybtc");
                LoadService(new HamsterPoolService(), data, "hamsterpool");
                LoadService(new ManualService(), data, "manual");

                // Set Id for each entry
                for (int x = 0; x < _priceEntries.Count; x++)
                {
                    _priceEntries[x].Id = x + 1;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Error processing service configuration: '{0}'.", ex.Message),
                                "Miner Control: Configuration file error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            if (_remoteSend)
            {
                _remoteSender = new MulticastSender(_endPoint, 1);
                _remoteSender.Start();
            }

            if (_remoteReceive)
            {
                _remoteReceiver = new MulticastReceiver(_endPoint);
                _remoteReceiver.DataReceived += ProcessRemoteData;
                _remoteReceiver.Start();
            }

            return(true);
        }
        protected override void Dispose(bool disposing)
        {
            logger.info("Dispose: disposing={0}", disposing);

            if (disposing)
            {
                if (receiver != null)
                {
                    receiver.stopPlayer();
                    this.receiver.BeginJoinGroup -= receiver_BeginJoinGroup;
                    this.receiver.EndJoinGroup -= receiver_EndJoinGroup;
                    this.receiver.ReceivedFirstPacket -= receiver_ReceivedFirstPacket;
                    this.receiver.setMediaPlayer(null);
                    if (receiver is IDisposable)
                    {
                        (receiver as IDisposable).Dispose();
                    }
                    receiver = null;
                }
            }
        }
Пример #8
0
        public bool LoadConfig()
        {
            string configFile = GetConfigPath();

            if (!File.Exists(configFile))
            {
                MessageBox.Show(string.Format("Config file, '{0}', not found.", configFile),
                                "Miner Control: Config file missing", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            Dictionary <string, object> data;

            try
            {
                string pageString = File.ReadAllText(configFile);
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                data = serializer.DeserializeObject(pageString) as Dictionary <string, object>;
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(string.Format("Error loading config file: '{0}'.", ex.Message),
                                "Miner Control: Config file error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            try
            {
                LoadConfigGeneral(data["general"] as Dictionary <string, object>);
                LoadConfigAlgorithms(data["algorithms"] as object[]);
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Error processing general configuration: '{0}'.", ex.Message),
                                "Miner Control: Config file error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            try
            {
                LoadService(new NiceHashService(), data, "nicehash");
                LoadService(new LtcRabbitService(), data, "ltcrabbit");
                LoadService(new WePayBtcService(), data, "wepaybtc");

                foreach (string service in data.Keys)
                {
                    switch (service)
                    {
                    case "general": break;

                    case "algorithms": break;

                    case "nicehash": break;

                    case "ltcrabbit": break;

                    case "wepaybtc": break;

                    default:
                        Dictionary <string, object> serviceData = data[service] as Dictionary <string, object>;
                        if (service.StartsWith("manual", StringComparison.InvariantCultureIgnoreCase))
                        {
                            if (serviceData != null && serviceData.ContainsKey("name"))
                            {
                                LoadService(new ManualService(serviceData.GetString("name")), serviceData);
                            }
                            else
                            {
                                LoadService(new ManualService(service), serviceData);
                            }
                        }
                        else if (service.EndsWith("coin", StringComparison.InvariantCultureIgnoreCase))
                        {
                            if (serviceData != null && serviceData.ContainsKey("name"))
                            {
                                LoadService(new CoinService(serviceData.GetString("name")), serviceData);
                            }
                            else
                            {
                                LoadService(new CoinService(service), serviceData);
                            }
                        }
                        else
                        {
                            //All others are treated as YaampClones
                            LoadService(new YaampCloneService(service), serviceData);
                        }
                        break;
                    }
                }

                // Set Id for each entry
                for (int x = 0; x < _priceEntries.Count; x++)
                {
                    _priceEntries[x].Id = x + 1;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Error processing service configuration: '{0}'.", ex.Message),
                                "Miner Control: Configuration file error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            if (_remoteSend)
            {
                _remoteSender = new MulticastSender(_endPoint, 1);
                _remoteSender.Start();
            }

            if (_remoteReceive)
            {
                _remoteReceiver = new MulticastReceiver(_endPoint);
                _remoteReceiver.DataReceived += ProcessRemoteData;
                _remoteReceiver.Start();
            }

            return(true);
        }