예제 #1
0
        /// <summary>
        /// 创建一个新的 <see cref="DbConnection"/> 对象。
        /// </summary>
        /// <param name="database"><see cref="IDatabase"/> 对象。</param>
        /// <param name="mode">分布式模式。</param>
        /// <returns><paramref name="database"/> 创建的 <see cref="DbConnection"/> 对象。</returns>
        public static DbConnection CreateConnection(this IDatabase database, DistributedMode mode = DistributedMode.Master)
        {
            Guard.ArgumentNull(database, nameof(database));

            ConnectionString connStr = null;

            if (mode == DistributedMode.Slave && database is IDistributedDatabase distDb)
            {
                connStr = DistributedConnectionManager.GetConnection(distDb);
            }

            return(database.Provider.CreateConnection((connStr ?? database.ConnectionString).ToString()));
        }
예제 #2
0
            public Mocks(SoulseekClientOptions clientOptions = null)
            {
                Client = new Mock <SoulseekClient>(clientOptions)
                {
                    CallBase = true,
                };

                Listener.Setup(m => m.Port).Returns(clientOptions?.ListenPort ?? new SoulseekClientOptions().ListenPort ?? 0);
                PeerConnectionManager.Setup(m => m.PendingSolicitations)
                .Returns(new Dictionary <int, string>());
                DistributedConnectionManager.Setup(m => m.PendingSolicitations)
                .Returns(new Dictionary <int, string>());

                Client.Setup(m => m.PeerConnectionManager).Returns(PeerConnectionManager.Object);
                Client.Setup(m => m.DistributedConnectionManager).Returns(DistributedConnectionManager.Object);
                Client.Setup(m => m.State).Returns(SoulseekClientStates.Connected | SoulseekClientStates.LoggedIn);
                Client.Setup(m => m.Options).Returns(clientOptions ?? new SoulseekClientOptions());
                Client.Setup(m => m.Listener).Returns(Listener.Object);
                Client.Setup(m => m.Waiter).Returns(Waiter.Object);
            }