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
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]
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)
remotely_registered_service_classes: Dict[Type, cengal.parallel_execution.coroutines.coro_standard_services.remote_nodes.versions.v_0.class_info.LocalClassInfo]
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]):
def
register_request_class( self, request: cengal.parallel_execution.coroutines.coro_scheduler.versions.v_0.coro_scheduler.Request):
Inherited Members
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]