7
7
import os
8
8
import sys
9
9
from typing import cast
10
+ from collections import defaultdict
10
11
11
12
from .common import PyprError , get_logger , init_logger
12
13
from .ipc import get_event_stream
@@ -93,6 +94,7 @@ async def _callHandler(self, full_name, *params):
93
94
94
95
async def read_events_loop (self ):
95
96
"Consumes the event loop and calls corresponding handlers"
97
+ last_cmd_args : dict [str , None | str ] = defaultdict (lambda : None )
96
98
while not self .stopped :
97
99
try :
98
100
data = (await self .event_reader .readline ()).decode ()
@@ -103,10 +105,13 @@ async def read_events_loop(self):
103
105
self .log .critical ("Reader starved" )
104
106
return
105
107
cmd , params = data .split (">>" , 1 )
106
- full_name = f"event_{ cmd } "
108
+ last_args = last_cmd_args .get (cmd )
109
+ if params != last_args :
110
+ full_name = f"event_{ cmd } "
107
111
108
- # self.log.debug("[%s] %s", cmd, params.strip())
109
- await self ._callHandler (full_name , params )
112
+ # self.log.debug("[%s] %s", cmd, params.strip())
113
+ await self ._callHandler (full_name , params )
114
+ last_cmd_args [cmd ] = params
110
115
111
116
async def read_command (self , reader , writer ) -> None :
112
117
"Receives a socket command"
0 commit comments