NodeLib – это Библиотека классов, предоставляющая классы для работы с графами (Graph, Node, Edge)
Принцип работы библиотеки прост – пользователь (программист, использующий библиотеку) пользуется предоставленными ему классами, а внутри себя экземпляр классов (объекты) фиксируют происходящие изменения и, при необходимости, формируют команду на изменение состояния графа. Команда помещается в специальную потокобезопасную очередь. Для каждого графа запускается обработчик очереди команд, изменения текущего графа. Обработчик работает в отдельном потоке, пока не активирован CancelationToken. Обработчик экономит ресурсы компьютера и работает только тогда, когда в очереди есть элементы. При вызове метода Dispose у графа активируется CancelationToken, и после обработки всей очереди команд очищаются ресурсы занимаемые графом.
Graph – класс представляющий граф сам по себе, позволяет создавать, получать по id и удалять узлы текущего графа. Также именно класс Graph содержит в себе логику обработку очереди команд (команд изменения состояния графа)
Node – класс представляющий узел графа сам по себе, позволяет работать с узлами графа, изменять их свойства, создавать, получать, изменять и удалять рёбра графа (связи с другими узлами графа)
Edge – класс представляющий ребро графа само по себе, реализует связи между узлами графа, а также может хранить полезную информацию о самом ребре
Command - класс, представляющий команду, содержит уникальный идентификатор, тип команды (CommandType) и некоторый передаваемый объект-значение
RpcRequect – класс описывающий запрос к TranslationServer, содержит в себе информацию о команде и дополнительные данные
from GraphLibrary import Edge, Node, Graph
import asyncio
async def main():
async with Graph(sender_endpoint="http://localhost:9090/") as graph:
node = graph.create_node()
if __name__ == '__main__':
asyncio.run(main())