Пример #1
0
        public void Init()
        {
            _start = DateTime.UtcNow;
            _stopwatch = Stopwatch.StartNew();

            _tickProvider = new MockTickProvider(GetTicks());
            _workerIdProvider = new MockNetworkProvider(BitConverter.GetBytes(1234567890L));
            _processIdProvider = new MockProcessIdProvider(BitConverter.GetBytes(10));
        }
Пример #2
0
        public SessionManager(ISessionStorage sessionStorage, IProcessIdProvider processIdProvider)
        {
            _sessionStorage    = sessionStorage;
            _processIdProvider = processIdProvider;

            _sessionKey = ToSessionKey(_processIdProvider.ParentProcessId);

            PurgeSessions();
        }
Пример #3
0
        public void Should_not_match_when_generated_from_two_processes()
        {
            // Arrange
            var generator1 = new NewIdGenerator(_tickProvider, _workerIdProvider, _processIdProvider);

            _processIdProvider = new MockProcessIdProvider(BitConverter.GetBytes(11));
            var generator2 = new NewIdGenerator(_tickProvider, _workerIdProvider, _processIdProvider);

            // Act
            var id1 = generator1.Next();
            var id2 = generator2.Next();

            // Assert
            Assert.AreNotEqual(id1, id2);
        }
Пример #4
0
        public NewIdGenerator(ITickProvider tickProvider, IWorkerIdProvider workerIdProvider, IProcessIdProvider processIdProvider = null, int workerIndex = 0)
        {
            _tickProvider = tickProvider;

            byte[] workerId = workerIdProvider.GetWorkerId(workerIndex);

            _c = workerId[0] << 24 | workerId[1] << 16 | workerId[2] << 8 | workerId[3];

            if(processIdProvider != null)
            {
                var processId = processIdProvider.GetProcessId();
                _d = processId[0] << 24 | processId[1] << 16;
            }
            else
            {
                _d = workerId[4] << 24 | workerId[5] << 16;
            }
        }
Пример #5
0
        public NewIdGenerator(ITickProvider tickProvider, IWorkerIdProvider workerIdProvider, IProcessIdProvider processIdProvider = null, int workerIndex = 0)
        {
            _tickProvider = tickProvider;

            _spinLock = new SpinLock(false);

            var workerId = workerIdProvider.GetWorkerId(workerIndex);

            _c = (workerId[0] << 24) | (workerId[1] << 16) | (workerId[2] << 8) | workerId[3];

            if (processIdProvider != null)
            {
                var processId = processIdProvider.GetProcessId();
                _d = (processId[0] << 24) | (processId[1] << 16);
            }
            else
            {
                _d = (workerId[4] << 24) | (workerId[5] << 16);
            }

            _gb = (short)_c;
            _gc = (short)(_c >> 16);
        }
Пример #6
0
 public static void SetProcessIdProvider(IProcessIdProvider provider)
 {
     _processIdProvider = provider;
 }
Пример #7
0
        public NewIdGenerator(ITickProvider tickProvider, IWorkerIdProvider workerIdProvider, IProcessIdProvider processIdProvider = null, int workerIndex = 0)
        {
            _tickProvider = tickProvider;

            byte[] workerId = workerIdProvider.GetWorkerId(workerIndex);

            _c = workerId[0] << 24 | workerId[1] << 16 | workerId[2] << 8 | workerId[3];

            if (processIdProvider != null)
            {
                var processId = processIdProvider.GetProcessId();
                _d = processId[0] << 24 | processId[1] << 16;
            }
            else
            {
                _d = workerId[4] << 24 | workerId[5] << 16;
            }
        }