Beispiel #1
0
        public void UpdateRankIndex(int docId, int tabIndex, int value)
        {
            if (_RankTab < 0)
            {
                return;
            }

            if (tabIndex != _RankTab)
            {
                return;
            }

            if (_Lock.Enter(Lock.Mode.Mutex))
            {
                try
                {
                    int rank = value;
                    if (rank < 0)
                    {
                        rank = 0;
                    }
                    else if (rank > 65535)
                    {
                        rank = 65535;
                    }

                    _DocIdToRank.AddOrUpdate(docId, (UInt16)rank);
                }
                finally
                {
                    _Lock.Leave(Lock.Mode.Mutex);
                }
            }
        }
Beispiel #2
0
        public async Task Register(Registration registration)
        {
            await Lock(async() =>
            {
                Console.WriteLine($"Received registration from User ID: {registration.UserId} at {registration.EndPoint}");

                registration.Renew();
                if (_registrationLookup.AddOrUpdate(registration.UserId, registration))
                {
                    //was an update, need to change the one in the list
                    for (int index = 0; index < _registrations.Count; index++)
                    {
                        var existingRegistration = _registrations[index];
                        if (existingRegistration.UserId == registration.UserId)
                        {
                            _registrations[index] = registration;
                            if (existingRegistration.EndPoint != registration.EndPoint)
                            {
                                foreach (var groupId in await _groupsClient.GetUsersGroups(registration.UserId))
                                {
                                    var endpoints = LookupGroupEndpoints(groupId);
                                    Console.WriteLine($"Changing endpoint for user: {registration.UserId} in group {groupId}");
                                    endpoints.Remove(existingRegistration.EndPoint);
                                    endpoints.Add(registration.EndPoint);
                                }
                            }
                        }
                    }
                }
                else
                {
                    _registrations.Add(registration);

                    foreach (var groupId in await _groupsClient.GetUsersGroups(registration.UserId))
                    {
                        var endpoints = LookupGroupEndpoints(groupId);
                        Console.WriteLine($"Adding user: {registration.UserId} to group {groupId}");
                        endpoints.Add(registration.EndPoint);
                    }
                }
            });
        }
 internal void AddOrUpdate(int value, int docId)
 {
     _ReplaceFieldValueIntToDocId.AddOrUpdate(value, docId);
 }