Пример #1
0
        public PlayerWindow()
        {
            DependencyUtility.BuildUp(this);
            InitializeComponent();



            this.Left = Properties.Settings.Default.Left;
            this.Top  = Properties.Settings.Default.Top;

            new DraggableWindow(this).DragFinished += (s, e) =>
            {
                Properties.Settings.Default.Left = this.Left;
                Properties.Settings.Default.Top  = this.Top;
                Properties.Settings.Default.Save();
            };

            musicSelectControl.Bind(musicPlayer.GetList().ToList());
            musicSelectControl.MusicChanged += musicItem => { musicPlayer.ChangeMusic(musicItem); musicPlayer.Play(); };


            pauseButton.Visibility = Visibility.Hidden;

            musicPlayer.MusicPlayed  += musicPlayer_MusicPlayed;
            musicPlayer.MusicPaused  += musicPlayer_MusicStopped;
            musicPlayer.MusicChanged += musicPlayer_MusicChanged;

            musicPlayer.Show += MusicPlayer_Show;

            musicPlayer.TrackAdded   += MusicPlayer_TrackAdded;
            musicPlayer.TrackDeleted += MusicPlayer_TrackDeleted;

            trackProgress.BindData(musicPlayer);
            musicPlayer_MusicChanged(null);
        }
Пример #2
0
        static void Main(string[] args)
        {
            //Create our log wrapper and events
            ILogger logger = new Logger();

            logger.OnError += OnError;
            logger.OnDebug += OnDebug;
            logger.OnWarn  += OnWarn;
            logger.OnInfo  += OnInfo;

            //Create our dependency utility and register the logger
            IDependencyUtility dependencyUtility = new DependencyUtility();

            dependencyUtility.Register <ILogger>(logger);

            //Set port and host
            int       port = Convert.ToInt32(1337);
            IPAddress host = IPAddress.Parse("0.0.0.0");

            //Start the server
            using (IServer server = new WebSocketServer("MyServerName", host, port, dependencyUtility))
            {
                //Start listening and blocking the main thread
                server.Run();
            }
        }
        /// <summary>
        /// Registers the connection.
        /// </summary>
        /// <param name="connection">The connection.</param>
        public override void RegisterConnection(IWebSocketConnection connection)
        {
            if (_connections == null)
            {
                _connections = DependencyUtility.Resolve <IWebSocketConnectionManager>();
            }

            _queueHandler.CreateQueue(QUEUE_EXCHANGE_ID, connection.ClientIdentifier);
            _queueHandler.AddEvent(QUEUE_EXCHANGE_ID, connection.ClientIdentifier, OnDequeue);
        }
Пример #4
0
        public void DependencyUtilityRegistersAndResolvesInterfaces()
        {
            Guid id = Guid.NewGuid();
            IDependencyUtility utility = new DependencyUtility();

            utility.Register <ITestInterface>(new TestClass(id));

            ITestInterface resolvedObject = utility.Resolve <ITestInterface>();

            Assert.Equal(id, resolvedObject.Id);
        }
Пример #5
0
        public void RegisterDependencies(IUnityContainer container)
        {
            DependencyUtility.SetContainer(container);

            container.RegisterFactory <ILogger>(m =>
            {
                ILogger log = new LoggerConfiguration()
                              .ReadFrom.Configuration(Configuration)
                              .Enrich.FromLogContext()
                              .WriteTo.File($@"{Directory.GetCurrentDirectory()}\log\log.txt", rollingInterval: RollingInterval.Day)
                              .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}")
                              .CreateLogger();

                return(log);
            }, new ContainerControlledLifetimeManager());
        }
Пример #6
0
        public void RemoveDeadConnectionsCleansUpCorrectly()
        {
            Mock <IThreadHelper> threadHelper = new Mock <IThreadHelper>();
            Mock <TcpClient>     client       = new Mock <TcpClient>();

            IDependencyUtility utility = new DependencyUtility();

            utility.Register <IThreadHelper>(threadHelper.Object);

            IWebSocketConnectionManager connectionManager = new WebSocketConnectionManager(utility);

            connectionManager.RegisterConnection(client.Object);
            connectionManager.RemoveDeadConnections();

            Assert.Equal(0, connectionManager.TotalConnections);
        }
Пример #7
0
        public void ConnectionManagerRegistersAndStartsClientThread()
        {
            Mock <IThreadHelper> threadHelper = new Mock <IThreadHelper>();
            Mock <TcpClient>     client       = new Mock <TcpClient>();

            IDependencyUtility utility = new DependencyUtility();

            utility.Register <IThreadHelper>(threadHelper.Object);

            IWebSocketConnectionManager connectionManager = new WebSocketConnectionManager(utility);

            connectionManager.RegisterConnection(client.Object);

            threadHelper.Verify(x => x.CreateAndRun(It.IsAny <ThreadStart>()), Times.Once);
            Assert.Equal(1, connectionManager.TotalConnections);
        }
Пример #8
0
        private void WriteExecuteDelete(Action <IConfigurationHandler> action, string json)
        {
            IDependencyUtility dependencyUtility = new DependencyUtility();

            dependencyUtility.Register(new Mock <ILogger>().Object);

            string path = $"{Path.GetTempPath()}/{DateTime.UtcNow.Ticks}.json";

            File.WriteAllText(path, json, Encoding.UTF8);

            IConfigurationHandler config = new ConfigurationHandler(null, path);

            try
            {
                action.Invoke(config);
            }
            finally
            {
                File.Delete(path);
            }
        }
Пример #9
0
        public void ExtensionLoaderThrowsExceptionWhenFileDoesNotExist()
        {
            string json = "{\"host\":\"0.0.0.0\",\"port\":1337,\"extensions\":{\"extension1\":{\"path\":\"\",\"config\":{\"key\":\"value\"}}}}";
            IConfigurationHandler config = GetConfigurationHandler(json, out string path);

            IDependencyUtility dependencyUtility = new DependencyUtility();

            dependencyUtility.Register <ILogger>(new Mock <ILogger>().Object);
            dependencyUtility.Register <IConfigurationHandler>(config);

            IExtensionLoader loader = new ExtensionLoader(dependencyUtility);

            try
            {
                Assert.Throws(typeof(ConfigurationItemMissingException), () => loader.LoadExtensions());
            }
            finally
            {
                File.Delete(path);
            }
        }
Пример #10
0
        public SettingsWindow()
        {
            InitializeComponent();

            DependencyUtility.BuildUp(this);

            autoRunMenuItem.IsChecked = AutorunHelper.IsAutorunRegistered;

            playerWindow = new VkMusic.UI.PlayerWindow();
            MyNotifyIcon.BeforeShowTrayPopup += MyNotifyIcon_BeforeShowTrayPopup;;

            MusicWorker.SynchronizationStarted   += MusicWorker_SynchronizationStarted;
            MusicWorker.SynchronizationCompleted += MusicWorker_SynchronizationCompleted;

            mainWindow = new MainWindow();

            MusicPlayer.MusicPlayed += () => startPauseItem.Header = "Пауза";
            MusicPlayer.MusicPaused += () => startPauseItem.Header = "Старт";

            playerWindow.Topmost = alwaysOnTopItem.IsChecked = Properties.Settings.Default.AlwaysOnTop;
        }
Пример #11
0
        public void ServerRunningFlagReturnsCorrectStatus()
        {
            IDependencyUtility dependencyUtility = new DependencyUtility();

            dependencyUtility.Register <ILogger>(new Mock <ILogger>().Object);
            dependencyUtility.Register <IRouteTable>(new Mock <IRouteTable>().Object);
            dependencyUtility.Register <ISecurityContainer>(new Mock <ISecurityContainer>().Object);
            dependencyUtility.Register <ITcpHandler>(new Mock <ITcpHandler>().Object);
            dependencyUtility.Register <IThreadHelper>(new Mock <IThreadHelper>().Object);

            using (IServer server = new Server.WebSocketServer(string.Empty, string.Empty, 0, dependencyUtility, 1, 3))
            {
                server.Run(false);

                Assert.True(server.IsRunning);

                server.Stop();

                Assert.False(server.IsRunning);
            }
        }
Пример #12
0
        static void Main(string[] args)
        {
            //Create our dependency utility
            IDependencyUtility dependencyUtility = new DependencyUtility();

            //Create our security container
            ISecurityContainer securityContainer = GenerateSecurityContainer();

            //Register dependencies
            dependencyUtility.Register <ISecurityContainer>(securityContainer);

            //Set port and host
            int       port = Convert.ToInt32(1337);
            IPAddress host = IPAddress.Parse("0.0.0.0");

            //Start the server
            using (IServer server = new Server.WebSocketServer("MyServerName", host, port, dependencyUtility))
            {
                //Start listening and blocking the main thread
                server.Run();
            }
        }
Пример #13
0
        public CommandInfo(MethodInfo method)
        {
            _method         = method;
            _parameters     = method.GetParameters();
            _parameterDict  = _parameters.ToDictionary(p => p.Name);
            _requiredParams = _parameters.Count(p => !p.IsOptional);

            _moduleFactory = DependencyUtility.CreateFactory(method.DeclaringType);

            if (method.ReturnType != typeof(Task) &&
                method.ReturnType.GetGenericTypeDefinition() != typeof(Task <>))
            {
                throw new ArgumentException($"{method} is not asynchronous.");
            }

            // build name regex
            _attribute = method.GetCustomAttribute <CommandAttribute>();

            if (_attribute == null)
            {
                throw new ArgumentException($"{method} is not a command.");
            }

            _nameRegex = new Regex(BuildNamePattern(method, _attribute), _options);

            // build parameter regex
            var bindingExpression  = method.GetCustomAttribute <BindingAttribute>()?.Expression;
            var requiredParameters = _parameterDict.Where(x => !x.Value.IsOptional).Select(x => x.Key);

            if (bindingExpression == null && _parameters.Any(p => !p.IsOptional))
            {
                bindingExpression = $"[{string.Join("] [", requiredParameters)}]";
            }

            _parameterRegex = new Regex(BuildParameterPattern(bindingExpression ?? ""), _options);

            // build optional parameter regex
            _optionRegex = new Regex(BuildOptionPattern(_parameters.Where(p => p.IsOptional).ToArray()), _options);
        }
Пример #14
0
        private void Prepare()
        {
            var directory = Directory.CreateDirectory(AppPaths.AppPath);



            musicLoader = new MusicLoader(directory.FullName, tokenID, userID);

            DependencyUtility.RegisterInstance(musicLoader);
            DependencyUtility.RegisterType <MusicPlayer>();

            DependencyUtility.RegisterInstance(new AutorunHelper(System.Reflection.Assembly.GetExecutingAssembly().Location));

            var progressWindow = new ProgressWindow("Синхронизация", musicLoader);

            progressWindow.Show();



            musicWorker = DependencyUtility.Resolve <TrackList>();

            musicPlayer = DependencyUtility.Resolve <MusicPlayer>();
            musicLoader.LoadAsync().ContinueWith((t) => Dispatcher.Invoke(firstSynchronizationCompleted));

            var settingsWindow = new SettingsWindow();

            fastTimer.Tick += (s, e) =>
            {
                if (!mutexShow.WaitOne(0, true))
                {
                    musicPlayer.InvokeShow();
                }
                else
                {
                    mutexShow.ReleaseMutex();
                }
            };
        }
Пример #15
0
        public void ServerRunningSpawnsCorrectAmountOfThreads()
        {
            IDependencyUtility dependencyUtility = new DependencyUtility();

            Mock <IThreadHelper> threadHelper = new Mock <IThreadHelper>();

            dependencyUtility.Register <ILogger>(new Mock <ILogger>().Object);
            dependencyUtility.Register <IRouteTable>(new Mock <IRouteTable>().Object);
            dependencyUtility.Register <ISecurityContainer>(new Mock <ISecurityContainer>().Object);
            dependencyUtility.Register <ITcpHandler>(new Mock <ITcpHandler>().Object);
            dependencyUtility.Register <IThreadHelper>(threadHelper.Object);

            using (IServer server = new Server.WebSocketServer(string.Empty, string.Empty, 0, dependencyUtility, 2, 4))
            {
                server.Run(false);

                //Listener threads: 2
                //Client threads: 2 * 4 (multiplicand)
                //Dead Connection thread: 1
                // = 11
                threadHelper.Verify(x => x.CreateAndRun(It.IsAny <ThreadStart>()), Times.Exactly(11));
                server.Stop();
            }
        }
Пример #16
0
 // The choice of seeding types used to get the exact assemblies is arbitrary as long as they
 // reside in the correct assemblies
 private static void AddDependenciesAutomatically(IServiceCollection services)
 {
     DependencyUtility.RegisterInterfaces("Service", services, Assembly.GetAssembly(typeof(IMessagesService)), Assembly.GetAssembly(typeof(MessagesService)));
     DependencyUtility.RegisterInterfaces("Repository", services, Assembly.GetAssembly(typeof(IMessagesRepository)), Assembly.GetAssembly(typeof(MessagesRepository)));
 }
 // Register all tasks
 private static void AddDependenciesAutomatically(IServiceCollection services)
 {
     DependencyUtility.RegisterInterfaces("Task", services, Assembly.GetAssembly(typeof(IDatabaseEventLogCleanupTask)), Assembly.GetAssembly(typeof(DatabaseEventLogCleanupTask)), DependencyTypes.Transient);
 }