mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-19 00:57:47 -04:00
Make get_if_app_services_interested_in_user faster
This commit is contained in:
parent
c57789d138
commit
760625acba
4 changed files with 34 additions and 13 deletions
|
@ -13,6 +13,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
import logging
|
||||
import re
|
||||
import simplejson as json
|
||||
from twisted.internet import defer
|
||||
|
||||
|
@ -36,19 +37,31 @@ class ApplicationServiceStore(SQLBaseStore):
|
|||
hs.config.app_service_config_files
|
||||
)
|
||||
|
||||
# We precompie a regex constructed from all the regexes that the AS's
|
||||
# have registered for exclusive users.
|
||||
exclusive_user_regexes = [
|
||||
regex.pattern
|
||||
for service in self.services_cache
|
||||
for regex in service.get_exlusive_user_regexes()
|
||||
]
|
||||
if exclusive_user_regexes:
|
||||
exclusive_user_regex = "|".join("(" + r + ")" for r in exclusive_user_regexes)
|
||||
self.exclusive_user_regex = re.compile(exclusive_user_regex)
|
||||
else:
|
||||
# We handle this case specially otherwise the constructed regex
|
||||
# will always match
|
||||
self.exclusive_user_regex = None
|
||||
|
||||
def get_app_services(self):
|
||||
return self.services_cache
|
||||
|
||||
def get_if_app_services_interested_in_user(self, user_id, exclusive=False):
|
||||
"""Check if the user is one associated with an app service
|
||||
def get_if_app_services_interested_in_user(self, user_id):
|
||||
"""Check if the user is one associated with an app service (exclusively)
|
||||
"""
|
||||
for service in self.services_cache:
|
||||
if service.is_interested_in_user(user_id):
|
||||
if exclusive:
|
||||
return service.is_exclusive_user(user_id)
|
||||
else:
|
||||
return True
|
||||
return False
|
||||
if self.exclusive_user_regex:
|
||||
return bool(self.exclusive_user_regex.match(user_id))
|
||||
else:
|
||||
return False
|
||||
|
||||
def get_app_service_by_user_id(self, user_id):
|
||||
"""Retrieve an application service from their user ID.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue