cengal.parallel_execution.coroutines.coro_standard_services.remote_nodes.versions.v_0.remote_node

Module Docstring Docstrings: http://www.python.org/dev/peps/pep-0257/

  1#!/usr/bin/env python
  2# coding=utf-8
  3
  4# Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>
  5# 
  6# Licensed under the Apache License, Version 2.0 (the "License");
  7# you may not use this file except in compliance with the License.
  8# You may obtain a copy of the License at
  9# 
 10#     http://www.apache.org/licenses/LICENSE-2.0
 11# 
 12# Unless required by applicable law or agreed to in writing, software
 13# distributed under the License is distributed on an "AS IS" BASIS,
 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 15# See the License for the specific language governing permissions and
 16# limitations under the License.
 17
 18
 19"""
 20Module Docstring
 21Docstrings: http://www.python.org/dev/peps/pep-0257/
 22"""
 23
 24
 25__author__ = "ButenkoMS <gtalk@butenkoms.space>"
 26__copyright__ = "Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>"
 27__credits__ = ["ButenkoMS <gtalk@butenkoms.space>", ]
 28__license__ = "Apache License, Version 2.0"
 29__version__ = "4.4.1"
 30__maintainer__ = "ButenkoMS <gtalk@butenkoms.space>"
 31__email__ = "gtalk@butenkoms.space"
 32# __status__ = "Prototype"
 33__status__ = "Development"
 34# __status__ = "Production"
 35
 36
 37from enum import Enum
 38from cengal.parallel_execution.coroutines.coro_scheduler import *
 39from cengal.parallel_execution.coroutines.coro_tools.await_coro import *
 40from cengal.parallel_execution.coroutines.coro_standard_services.asyncio_loop import *
 41from cengal.parallel_execution.coroutines.coro_standard_services.loop_yield import CoroPriority
 42from cengal.parallel_execution.coroutines.coro_standard_services.put_coro import *
 43from cengal.parallel_execution.coroutines.coro_standard_services.timer_func_runner import *
 44from cengal.file_system.file_manager import path_relative_to_current_dir
 45from cengal.time_management.cpu_clock_cycles import perf_counter
 46from cengal.data_manipulation.serialization import *
 47from typing import Hashable, Tuple, List, Any, Dict, Callable, Type
 48from cengal.introspection.inspect import get_exception, entity_owning_module_importable_str, entity_owning_module_info_and_owning_path, entity_properties
 49from cengal.io.core.memory_management import IOCoreMemoryManagement
 50from cengal.parallel_execution.asyncio.efficient_streams import StreamManagerIOCoreMemoryManagement, TcpStreamManager, UdpStreamManager, StreamManagerAbstract
 51from cengal.code_flow_control.smart_values import ValueExistence
 52from cengal.io.named_connections.named_connections_manager import NamedConnectionsManager
 53from cengal.code_flow_control.args_manager import number_of_provided_args
 54from cengal.data_manipulation.serialization import Serializer, Serializers, best_serializer_for_standard_data
 55from cengal.code_flow_control.args_manager import find_arg_position_and_value, UnknownArgumentError
 56from cengal.data_generation.id_generator import IDGenerator, GeneratorType
 57from cengal.system import PLATFORM_NAME, PYTHON_VERSION
 58from importlib import import_module
 59import sys
 60import os
 61import asyncio
 62
 63from .exceptions import *
 64from .commands import *
 65from .class_info import *
 66from .request_class_info import *
 67from .serializers import *
 68
 69
 70class RemoteNode:
 71    def __init__(self) -> None:
 72        self.foreign_platform_name: str = None
 73        self.serializers: Dict[SerializerID, Serializer] = dict()
 74        self.request_id_gen: IDGenerator = IDGenerator(GeneratorType.integer)
 75    
 76    def register_node(self, data: Dict):
 77        raise NotImplementedError
 78    
 79    def gen_request_id(self) -> int:
 80        return self.request_id_gen()
 81
 82    def register_service_class(self, *args, **kwargs):
 83        raise NotImplementedError
 84
 85    def register_request_class(self, *args, **kwargs):
 86        raise NotImplementedError
 87
 88
 89class RemoteServer(RemoteNode):
 90    def __init__(self) -> None:
 91        super().__init__()
 92        self.service_class_id_gen: IDGenerator = IDGenerator(GeneratorType.integer)
 93        self.remotely_registered_service_classes: Dict[Type, LocalClassInfo] = dict()
 94        
 95        self.request_class_id_gen: IDGenerator = IDGenerator(GeneratorType.integer)
 96        self.remotely_registered_request_classes: Dict[Type, LocalRequestClassInfo] = dict()
 97    
 98    def register_service_class(self, class_type: Type[Service]):
 99        self.remotely_registered_service_classes[class_type] = LocalClassInfo(self.service_class_id_gen(), class_type)
100    
101    def register_request_class(self, request: Request):
102        self.remotely_registered_request_classes[type(request)] = LocalRequestClassInfo(self.request_class_id_gen(), request)
103
104
105class RemoteClient(RemoteNode):
106    def __init__(self) -> None:
107        super().__init__()
108        self.locally_registered_service_classes: Dict[Hashable, RemoteClassInfo] = dict()
109        self.locally_registered_request_classes: Dict[Hashable, RemoteClassInfo] = dict()
110    
111    def register_service_class(self, data: Dict):
112        remote_class_info: RemoteClassInfo = RemoteClassInfo.from_data(data)
113        self.locally_registered_service_classes[remote_class_info.local_id] = remote_class_info
114    
115    def register_request_class(self, data: Dict):
116        remote_request_class_info: RemoteRequestClassInfo = RemoteRequestClassInfo.from_data(data)
117        self.locally_registered_request_classes[remote_request_class_info.local_id] = remote_request_class_info
class RemoteNode:
71class RemoteNode:
72    def __init__(self) -> None:
73        self.foreign_platform_name: str = None
74        self.serializers: Dict[SerializerID, Serializer] = dict()
75        self.request_id_gen: IDGenerator = IDGenerator(GeneratorType.integer)
76    
77    def register_node(self, data: Dict):
78        raise NotImplementedError
79    
80    def gen_request_id(self) -> int:
81        return self.request_id_gen()
82
83    def register_service_class(self, *args, **kwargs):
84        raise NotImplementedError
85
86    def register_request_class(self, *args, **kwargs):
87        raise NotImplementedError
foreign_platform_name: str
serializers: Dict[cengal.parallel_execution.coroutines.coro_standard_services.remote_nodes.versions.v_0.serializers.SerializerID, cengal.data_manipulation.serialization.versions.v_0.serialization.Serializer]
request_id_gen: <cyfunction IDGenerator at 0x7f5316b55ad0>
def register_node(self, data: typing.Dict):
77    def register_node(self, data: Dict):
78        raise NotImplementedError
def gen_request_id(self) -> int:
80    def gen_request_id(self) -> int:
81        return self.request_id_gen()
def register_service_class(self, *args, **kwargs):
83    def register_service_class(self, *args, **kwargs):
84        raise NotImplementedError
def register_request_class(self, *args, **kwargs):
86    def register_request_class(self, *args, **kwargs):
87        raise NotImplementedError
class RemoteServer(RemoteNode):
 90class RemoteServer(RemoteNode):
 91    def __init__(self) -> None:
 92        super().__init__()
 93        self.service_class_id_gen: IDGenerator = IDGenerator(GeneratorType.integer)
 94        self.remotely_registered_service_classes: Dict[Type, LocalClassInfo] = dict()
 95        
 96        self.request_class_id_gen: IDGenerator = IDGenerator(GeneratorType.integer)
 97        self.remotely_registered_request_classes: Dict[Type, LocalRequestClassInfo] = dict()
 98    
 99    def register_service_class(self, class_type: Type[Service]):
100        self.remotely_registered_service_classes[class_type] = LocalClassInfo(self.service_class_id_gen(), class_type)
101    
102    def register_request_class(self, request: Request):
103        self.remotely_registered_request_classes[type(request)] = LocalRequestClassInfo(self.request_class_id_gen(), request)
service_class_id_gen: <cyfunction IDGenerator at 0x7f5316b55ad0>
remotely_registered_service_classes: Dict[Type, cengal.parallel_execution.coroutines.coro_standard_services.remote_nodes.versions.v_0.class_info.LocalClassInfo]
request_class_id_gen: <cyfunction IDGenerator at 0x7f5316b55ad0>
remotely_registered_request_classes: Dict[Type, cengal.parallel_execution.coroutines.coro_standard_services.remote_nodes.versions.v_0.request_class_info.LocalRequestClassInfo]
def register_service_class( self, class_type: typing.Type[cengal.parallel_execution.coroutines.coro_scheduler.versions.v_0.coro_scheduler.Service]):
 99    def register_service_class(self, class_type: Type[Service]):
100        self.remotely_registered_service_classes[class_type] = LocalClassInfo(self.service_class_id_gen(), class_type)
def register_request_class( self, request: cengal.parallel_execution.coroutines.coro_scheduler.versions.v_0.coro_scheduler.Request):
102    def register_request_class(self, request: Request):
103        self.remotely_registered_request_classes[type(request)] = LocalRequestClassInfo(self.request_class_id_gen(), request)
class RemoteClient(RemoteNode):
106class RemoteClient(RemoteNode):
107    def __init__(self) -> None:
108        super().__init__()
109        self.locally_registered_service_classes: Dict[Hashable, RemoteClassInfo] = dict()
110        self.locally_registered_request_classes: Dict[Hashable, RemoteClassInfo] = dict()
111    
112    def register_service_class(self, data: Dict):
113        remote_class_info: RemoteClassInfo = RemoteClassInfo.from_data(data)
114        self.locally_registered_service_classes[remote_class_info.local_id] = remote_class_info
115    
116    def register_request_class(self, data: Dict):
117        remote_request_class_info: RemoteRequestClassInfo = RemoteRequestClassInfo.from_data(data)
118        self.locally_registered_request_classes[remote_request_class_info.local_id] = remote_request_class_info
locally_registered_service_classes: Dict[Hashable, cengal.parallel_execution.coroutines.coro_standard_services.remote_nodes.versions.v_0.class_info.RemoteClassInfo]
locally_registered_request_classes: Dict[Hashable, cengal.parallel_execution.coroutines.coro_standard_services.remote_nodes.versions.v_0.class_info.RemoteClassInfo]
def register_service_class(self, data: typing.Dict):
112    def register_service_class(self, data: Dict):
113        remote_class_info: RemoteClassInfo = RemoteClassInfo.from_data(data)
114        self.locally_registered_service_classes[remote_class_info.local_id] = remote_class_info
def register_request_class(self, data: typing.Dict):
116    def register_request_class(self, data: Dict):
117        remote_request_class_info: RemoteRequestClassInfo = RemoteRequestClassInfo.from_data(data)
118        self.locally_registered_request_classes[remote_request_class_info.local_id] = remote_request_class_info