communication

package
v0.0.0-...-8d2886a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2024 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ArtchitectorSwitch = "переключи"
)
View Source
const (
	SecondsToLostConnection = 2 // если 2 секунды нет сообщений с asgard, то это значит, что коннект мы потеряли
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Bot

type Bot struct {
	ChatArtchitectChoice   int64
	ChatArtchitectorChoice int64
	ArtchitectorID         int
	// contains filtered or unexported fields
}

Bot - телеграм-бот, который отправляет картинки в телеграм-чаты

func NewBot

func NewBot(
	artPile artPile,
	warehouse warehouse,
	settings settings,
	token string,
	chatArtchitectChoice int64,
	chatArtchitectorChoice int64,
	artchitectorID int,
) *Bot

func (*Bot) SendArtchitectChoice

func (b *Bot) SendArtchitectChoice(ctx context.Context, artID uint) error

func (*Bot) SendArtchitectorChoice

func (b *Bot) SendArtchitectorChoice(ctx context.Context, artID uint) error

func (*Bot) Start

func (b *Bot) Start(ctx context.Context) error

type Harbour

type Harbour struct {
	// contains filtered or unexported fields
}

Harbour - гавань, принимающая полезные грузы от верхнего мира Asgard, который выше по течению радужного моста. В гавани принимают грузы, сортируют - некоторые отправляют конечным получателям, некоторые обрабатывают (внутри Альфхейма)

Odin: светлые эльфы Альфхейма придумали поставить радиомачту в гавани, Odin: а все грузы оцифровать и передавать в видео РАДИОГРАММ. Loki: а до этого момента грузы на деревянных драккарах плыли? Зачем цифровать цифровое? Я не вижу драккара, вижу redis-пакет. Odin: Локи, ты хоть и бог, но сейчас решил мыслить совсем узколобо. Odin: Мир бесконечен и имеет много уровней проявления одного явления. Есть технический аспект (алгоритмы, код, данные, redis-message), и этот аспект, кстати, тоже нефизический, а абстрактный. Код - просто буквы. Есть физический аспект (как двигаются электроны в интегральных схемах и проводах, зажигаются пиксели на экране). А есть аспект на уровне абстрактной идеи Artchitect, сказочной в нашем случае, и тут эльфы отправляют радиограммы. Какой-то светлый эльф сидит в радио-студии с чашечкой кофе, и рассказывает слушателям, как выглядит очередная картина, сотворённая в Асгарде. На уровне сказочной идеи Artchitect я могу как угодно называть эти явления, хоть драккарами, хоть пакетами, грузами, радиограммами, радужными мостами, и вешать на них любые ярлыки из мира относительного ума. Я придумываю, как это выглядит на уровне идеи, а код подстроится под эту картинку. Loki: твоя мудрость не знает границ, Всеотец. Но как же программисты, которые потом это будут поддерживать? Ты о них подумал? Odin: Вряд ли им будет легко, но я постараюсь всю свою задумку комментировать Odin: поймут содержание и суть сказки - тогда поймут и всю архитектуру проекта. Odin: представь себя на месте программиста из будущего, который вместо сухой документации может прочитать забавный рассказ с картинками за 10-20 минут, и после этого он уже поймёт и суть проекта, и как в нём ориентироваться - где искать все эти мосты и драккары.

Odin: эльфы через радио рассылают всем мидгардцам (клиентам) оцифрованные грузы Odin: это нужно для направления потока данных внутри этой программы Odin: golang настолько примитивен по сравнению с технологиями Асгарда... Loki: Всеотец, с тобой довольно душно в этой программе находиться) Odin: с тобой мы еще не закончили наш спор. [в тот момент спор еще не был окончен, до релиза #1]

Внутренний подписчик может настроиться на радио, и так слушать данные о грузах в гавани Odin: некоторые грузы не будут переданы в Мидгард, а будут использованы локально внутри Альфхейма Odin: некоторые грузы будут ретранслированы наружу (websocket), оно доступно из Мидгарда (браузера)

func NewHarbour

func NewHarbour(red *redis.Client, bot botInterface) *Harbour

func (*Harbour) ListenRadio

func (l *Harbour) ListenRadio(subscribeCtx context.Context) chan model.Radiogram

ListenRadio - подписка радиослушателя. Передаются все события, подлежащие веерной трансляции (без фильтрации) Слушатель сам должен отфильтровать те радиограммы, которые ему не нужны

func (*Harbour) Run

func (l *Harbour) Run(ctx context.Context) error

Run - запуск процесса получения грузов из Асгарда по радужному мосту (redis-у) и ретрансляции их по радио в виде радиограмм Odin: запускайте это в горутине, или оно остановит всё остальное

func (*Harbour) SendCrownWaitCargo

func (l *Harbour) SendCrownWaitCargo(ctx context.Context, request string) (string, error)

SendCrownWaitCargo - отправка почтового ворона с личной просьбой к Одину-Всеотцу и ожидание специального груза с Его ответом TODO: Odin: точно ли этот метод можно вызывать параллельно? Это надо протестировать.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL