Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# SPDX-License-Identifier: Apache-2.0 

2 

3# Copyright 2020 Contributors to OpenLEADR 

4 

5# Licensed under the Apache License, Version 2.0 (the "License"); 

6# you may not use this file except in compliance with the License. 

7# You may obtain a copy of the License at 

8 

9# http://www.apache.org/licenses/LICENSE-2.0 

10 

11# Unless required by applicable law or agreed to in writing, software 

12# distributed under the License is distributed on an "AS IS" BASIS, 

13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

14# See the License for the specific language governing permissions and 

15# limitations under the License. 

16 

17import asyncio 

18 

19HOOKS = {'before_parse': [], 

20 'before_handle': [], 

21 'after_handle': [], 

22 'before_respond': []} 

23 

24 

25def register(hook_point, callback): 

26 """ 

27 Call a hook 

28 """ 

29 if hook_point not in HOOKS: 

30 raise ValueError(f"""The hook_point must be one of '{', '.join(HOOKS.keys())}', """ 

31 f"""you provided '{hook_point}'""") 

32 HOOKS[hook_point].append(callback) 

33 

34 

35def call(hook_point, *args, **kwargs): 

36 loop = asyncio.get_event_loop() 

37 for hook in HOOKS.get(hook_point, []): 

38 loop.create_task(hook(*args, **kwargs))