interface: use itertools.count
This commit is contained in:
@@ -31,6 +31,7 @@ import asyncio
|
|||||||
from typing import Tuple, Union, List, TYPE_CHECKING, Optional
|
from typing import Tuple, Union, List, TYPE_CHECKING, Optional
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from ipaddress import IPv4Network, IPv6Network, ip_address
|
from ipaddress import IPv4Network, IPv6Network, ip_address
|
||||||
|
import itertools
|
||||||
|
|
||||||
import aiorpcx
|
import aiorpcx
|
||||||
from aiorpcx import RPCSession, Notification, NetAddress
|
from aiorpcx import RPCSession, Notification, NetAddress
|
||||||
@@ -75,15 +76,10 @@ class NotificationSession(RPCSession):
|
|||||||
self.subscriptions = defaultdict(list)
|
self.subscriptions = defaultdict(list)
|
||||||
self.cache = {}
|
self.cache = {}
|
||||||
self.default_timeout = NetworkTimeout.Generic.NORMAL
|
self.default_timeout = NetworkTimeout.Generic.NORMAL
|
||||||
self._msg_counter = 0
|
self._msg_counter = itertools.count(start=1)
|
||||||
self.interface = None # type: Optional[Interface]
|
self.interface = None # type: Optional[Interface]
|
||||||
self.cost_hard_limit = 0 # disable aiorpcx resource limits
|
self.cost_hard_limit = 0 # disable aiorpcx resource limits
|
||||||
|
|
||||||
def _get_and_inc_msg_counter(self):
|
|
||||||
# runs in event loop thread, no need for lock
|
|
||||||
self._msg_counter += 1
|
|
||||||
return self._msg_counter
|
|
||||||
|
|
||||||
async def handle_request(self, request):
|
async def handle_request(self, request):
|
||||||
self.maybe_log(f"--> {request}")
|
self.maybe_log(f"--> {request}")
|
||||||
try:
|
try:
|
||||||
@@ -105,7 +101,7 @@ class NotificationSession(RPCSession):
|
|||||||
async def send_request(self, *args, timeout=None, **kwargs):
|
async def send_request(self, *args, timeout=None, **kwargs):
|
||||||
# note: semaphores/timeouts/backpressure etc are handled by
|
# note: semaphores/timeouts/backpressure etc are handled by
|
||||||
# aiorpcx. the timeout arg here in most cases should not be set
|
# aiorpcx. the timeout arg here in most cases should not be set
|
||||||
msg_id = self._get_and_inc_msg_counter()
|
msg_id = next(self._msg_counter)
|
||||||
self.maybe_log(f"<-- {args} {kwargs} (id: {msg_id})")
|
self.maybe_log(f"<-- {args} {kwargs} (id: {msg_id})")
|
||||||
try:
|
try:
|
||||||
response = await asyncio.wait_for(
|
response = await asyncio.wait_for(
|
||||||
|
|||||||
Reference in New Issue
Block a user