Mini Shell
import asyncio
from logging import getLogger
from defence360agent.contracts.config import UserConfig
from defence360agent.contracts.messages import MessageType
from defence360agent.contracts.plugins import MessageSink, expect
from im360.simple_rpc.resident_socket import send_to_socket
logger = getLogger(__name__)
class Repeater(MessageSink):
async def create_sink(self, loop):
self._loop = loop
@expect(MessageType.FilesUpdated)
async def resend_to_generic_socket(self, msg):
asyncio.create_task(
send_to_socket(
msg={
"method": "FILES_UPDATE",
"files_type": msg["files_type"],
},
wait_for_response=False,
)
)
@expect(MessageType.ConfigUpdate)
async def resend_config_update_to_generic_socket(self, msg):
if isinstance(msg["conf"], UserConfig):
return # do nothing for non-root config updates
asyncio.create_task(
send_to_socket(
msg={
"method": "UPDATE_RULES",
},
wait_for_response=False,
)
)