Errors codes manager for binary errors system, unlocking the 32 bits limit.
Go to file
2026-04-13 07:25:19 +02:00
Artbook feat: ECMA and Python Script file with documentation done. 2024-10-11 13:42:28 +02:00
CSharp #wip(cs): Tests done. Check oversize set errors. 2026-04-13 07:25:19 +02:00
JSON feat: ECMA and Python Script file with documentation done. 2024-10-11 13:42:28 +02:00
Public fix(ecma): 'has' local public method fixed in 'set' method. 2025-02-19 09:46:47 +01:00
Python #wip(cs): Doing CS version. Changes methods. 2026-04-07 07:13:34 +02:00
Tools feat: ECMA and Python Script file with documentation done. 2024-10-11 13:42:28 +02:00
.gitignore #wip(cs): Done. Needs and BASH=/usr/bin/bash 2026-04-12 21:00:27 +02:00
LICENSE Initial commit 2024-06-22 13:08:40 +00:00
README.md #wip(cs): Tests done. Check oversize set errors. 2026-04-13 07:25:19 +02:00
version #wip(cs): Tests done. Check oversize set errors. 2026-04-13 07:25:19 +02:00

ErrorsManager

ErrorsManager es una librería que nos permite hacer una gestión de errores mediante códigos de error en base binaria o agrupación de base numérica. La idea es poder trasladar un análisis global de errores entre plataformas de forma simple con el condicionante que ambas plataformas han de conocer estructuralmente el sistema de errores. El propósito de dicho sistema es conseguir un sistema unificado de errores que permita el envío compacto de los mismos evitando un uso innecesario de red.

Funcionamiento

La idea es crear un objeto ErrorsManager para gestionar los errores dentro del código y hacer uso de set, has y process para gestionar los errores, aunque de por sí tenga más funcionalidades.

NOTA: Este manual ordenará los métodos y estructuras conforme su utilidad e importancia fuera del ámbito de la propia librería para uso general.

Constructor

errors_manager:ErrorsManager = new ErrorsManager(inputs:dict[str, any|null])

  • alphabet: Alfabeto String o Array de Caracteres.
  • base: Entero que representa la máxima base 2 numérica que se usará: 16, 32 o 64, por ejemplo.

El alfabeto no puede contener caracteres iguales, y si los contiene, se encargará de eliminarlos, reduciendo la posibilidad de base.

set

error:int = errors_manager.set(from:int, code:int|list[byte]|str, from:int = 0, bits:int = 0)

error:list[byte]= errors_manager.set(from:list[byte], code:int|list[byte]|str, from:int = 0, bits:int = 0)

error:str = errors_manager.set(from:str, code:int|list[byte]|str, from:int = 0, bits:int = 0)

  1. error: Código de error original. Puede ser un String, Array de enteros que representan los Hexas o un entero.
  2. code: Código de error a establecer. Puede ser un String, Array de enteros que representan los Hexas o un entero.
  3. from: Determina si se quiere desplazar code. 0 indica que no.
  4. bits: Determina si se pasan a 0 los bits que de error desde from. 0 indica que no.

El from negativo indica que se cuente desde el final, y el bits negativo que se cuente para atrás. Esto se establece desde ErrorsManager.get_from_bits.

Retorna el resultado de la unión de error con code a partir de las posibles modificaciones de from y bits.

has

has:bool = errors_manager.has(code:int|list[byte]|str)

Determina si un código de error contiene errores o no.

process

errors_messages:list[tuple[int, str]] = errors_manager.process(code:int|list[byte]|str, messages:list[str] = [ ... ])

Permite recoger el conjunto de mensajes conforme al código de error. Cada mensaje irá acompañado de su Bit de posición, de ahí que retorne una lista de tuplas de un valor entero, que es el Bit de posición; y el String, que es el mensaje en cuestión.

[position, message for position:int, message:str in errors_messages]

Si retorna una lista vacía es que no hay errores.

.NET

Para crear los SLN de la Solución:

#!/bin/bash

docker exec -it anp-dotnet bash

cd CSharp
dotnet new sln -n ErrorsManager
dotnet sln add ErrorsManager.csproj
cd ..

exit

sudo chown -R root:$USER CSharp/ErrorsManager.slnx

Luego hay que pelar el archivo de definición de proyecto ErrorsManager.csproj:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <!-- <OutputType>Library</OutputType> -->
        <TargetFrameworks>net10.0;net462</TargetFrameworks>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <RootNamespace>ErrorsManager</RootNamespace>
        <AssemblyName>ErrorsManager</AssemblyName>
        <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
    </PropertyGroup>
    <ItemGroup>
        <Compile Include="ErrorsManager.cs" />
        <Compile Include="Program.cs" />
        <Compile Include="Tests.cs" />
    </ItemGroup>
</Project>

Instalación del SDK para desarrollo VSCode.

#!/bin/bash
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-sdk-10.0

Luego, instalar el Pluggin Nuget de Visual Studio Code C/C++ DevTools.

Para ejecutar un proyecto .NET desde Docker.

#!/bin/bash
docker exec -it anp-dotnet dotnet run --project /workspace/CSharp/ErrorsManager.csproj -f net10.0

Para compilar DLL primero configurar el archivo de definición de proyecto ErrorsManager.csproj.

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <!-- <OutputType>Exe</OutputType> -->
        <OutputType>Library</OutputType>
        <TargetFrameworks>net10.0;net462</TargetFrameworks>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <RootNamespace>ErrorsManager</RootNamespace>
        <AssemblyName>ErrorsManager</AssemblyName>
        <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
    </PropertyGroup>
    <ItemGroup>
        <Compile Include="ErrorsManager.cs" />
        <!-- <Compile Include="Program.cs" />
        <Compile Include="Tests.cs" /> -->
    </ItemGroup>
</Project>

Y luego ejecutar:

#!/bin/bash
dotnet build ErrorsManager.csproj -c Release

Objetivos

Leyenda:

  • Py: Python
  • PHP
  • JS: JavaScript/ECMAScript
  • MSL: SQLServer/TransactSQL
  • MyL: MySQL/MariaDB
  • CS: C#/CSharp
  • VB: VisualBasic
  • Go: Golang
  • RS: Rust
  • C
  • CPP: C++

Tabla de objetivos:

Objetivo Py PHP JS MSL MyS CS VB Go RS C CPP
Common base [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
set_alphabet [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
get_alphabet [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
to_array [X] [ ] [X] [X] [ ] [ ] [ ] [ ] [ ]
to_integer [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
to_string [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
to_string_binary [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
process [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
get_bits [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
bitwise [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
get_from_bits [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
reset [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
get_range [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
has [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
clean [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]
set [X] [ ] [X] [ ] [ ] [X] [ ] [ ] [ ] [ ] [ ]

NOTA: Los Checkbox indican el estado siendo los siguientes:

  • Sin cubrir, está por hacerse.
  • [-] Están en desarrollo actualmente.
  • Ya está hecho y es usable.

NOTA: Según lenguajes que tenga cierta rigidez, como es el caso de Golang, los nombres de los métodos y atributos pueden cambiar a Camel o Pascal.

  • Comprobar Tests.set con Tests.errors un valor pequeño sobre uno grande o desplazado a la izquierda para ver la sobredimensión.