mirror of
https://github.com/iio612/DEFENDER.git
synced 2026-02-13 11:14:23 +00:00
last changes for asyncio
This commit is contained in:
@@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Optional
|
||||
from dataclasses import dataclass
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from core.irc import Irc
|
||||
from core.loader import Loader
|
||||
|
||||
class IModule(ABC):
|
||||
|
||||
@@ -13,19 +13,19 @@ class IModule(ABC):
|
||||
"""The Model containing the module parameters
|
||||
"""
|
||||
|
||||
def __init__(self, uplink: 'Irc') -> None:
|
||||
def __init__(self, uplink: 'Loader') -> None:
|
||||
|
||||
# Module name (Mandatory)
|
||||
self.module_name = 'mod_' + str(self.__class__.__name__).lower()
|
||||
|
||||
# Add Irc Object to the module (Mandatory)
|
||||
self.Irc = uplink
|
||||
self.Irc = uplink.Irc
|
||||
|
||||
# Add Loader object to the module (Mandatory)
|
||||
self.Loader = uplink.Loader
|
||||
self.Loader = uplink
|
||||
|
||||
# Add Protocol to the module (Mandatory)
|
||||
self.Protocol = uplink.Protocol
|
||||
self.Protocol = uplink.Irc.Protocol
|
||||
|
||||
# Add Global Configuration to the module (Mandatory)
|
||||
self.Config = uplink.Config
|
||||
@@ -40,7 +40,7 @@ class IModule(ABC):
|
||||
self.MainUtils = uplink.Utils
|
||||
|
||||
# Add logs object to the module (Mandatory)
|
||||
self.Logs = uplink.Loader.Logs
|
||||
self.Logs = uplink.Logs
|
||||
|
||||
# Add User object to the module (Mandatory)
|
||||
self.User = uplink.User
|
||||
@@ -57,19 +57,23 @@ class IModule(ABC):
|
||||
# Add Reputation object to the module (Optional)
|
||||
self.Reputation = uplink.Reputation
|
||||
|
||||
# Load the child classes
|
||||
# Log the module
|
||||
self.Logs.debug(f'Loading Module {self.module_name} ...')
|
||||
|
||||
def init(self) -> None:
|
||||
self.load()
|
||||
|
||||
# Inspect child classes
|
||||
self.inspect_class()
|
||||
|
||||
self.create_tables()
|
||||
|
||||
# Sync the configuration with core configuration (Mandatory)
|
||||
uplink.Base.db_sync_core_config(self.module_name, self.ModConfig)
|
||||
self.Base.db_sync_core_config(self.module_name, self.ModConfig)
|
||||
return None
|
||||
|
||||
# Log the module
|
||||
self.Logs.debug(f'Loading Module {self.module_name} ...')
|
||||
def inspect_class(self):
|
||||
if not hasattr(self, 'ModConfig'):
|
||||
raise AttributeError("The Module must init ModConfig attribute in the load method!")
|
||||
if not hasattr(self, 'MOD_HEADER'):
|
||||
raise NotImplementedError(f"You must declare the header of the module in {self.__class__.__name__}!")
|
||||
|
||||
def update_configuration(self, param_key: str, param_value: str) -> None:
|
||||
"""Update the local and core configuration
|
||||
@@ -80,12 +84,6 @@ class IModule(ABC):
|
||||
"""
|
||||
self.Base.db_update_core_config(self.module_name, self.ModConfig, param_key, param_value)
|
||||
|
||||
def inspect_class(self):
|
||||
if not hasattr(self, 'ModConfig'):
|
||||
raise AttributeError("The Module must init ModConfig attribute in the load method!")
|
||||
if not hasattr(self, 'MOD_HEADER'):
|
||||
raise NotImplementedError(f"You must declare the header of the module in {self.__class__.__name__}!")
|
||||
|
||||
@abstractmethod
|
||||
def create_tables(self) -> None:
|
||||
"""Method that will create the database if it does not exist.
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
"""This class should never be reloaded.
|
||||
"""
|
||||
import asyncio
|
||||
from logging import Logger
|
||||
from threading import Timer, Thread, RLock
|
||||
from asyncio.locks import Lock
|
||||
from socket import socket
|
||||
from typing import Any, Optional, TYPE_CHECKING
|
||||
from core.definition import MSModule, MAdmin
|
||||
@@ -17,9 +19,11 @@ class Settings:
|
||||
|
||||
RUNNING_TIMERS: list[Timer] = []
|
||||
RUNNING_THREADS: list[Thread] = []
|
||||
RUNNING_ASYNCTASKS: list[asyncio.Task] = []
|
||||
RUNNING_SOCKETS: list[socket] = []
|
||||
PERIODIC_FUNC: dict[str, Any] = {}
|
||||
LOCK: RLock = RLock()
|
||||
AILOCK: Lock = Lock()
|
||||
|
||||
CONSOLE: bool = False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user