Documentation ¶
Index ¶
Constants ¶
const (
ArtchitectorSwitch = "переключи"
)
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 (*Bot) SendArtchitectChoice ¶
func (*Bot) SendArtchitectorChoice ¶
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 ¶
ListenRadio - подписка радиослушателя. Передаются все события, подлежащие веерной трансляции (без фильтрации) Слушатель сам должен отфильтровать те радиограммы, которые ему не нужны
func (*Harbour) Run ¶
Run - запуск процесса получения грузов из Асгарда по радужному мосту (redis-у) и ретрансляции их по радио в виде радиограмм Odin: запускайте это в горутине, или оно остановит всё остальное
func (*Harbour) SendCrownWaitCargo ¶
SendCrownWaitCargo - отправка почтового ворона с личной просьбой к Одину-Всеотцу и ожидание специального груза с Его ответом TODO: Odin: точно ли этот метод можно вызывать параллельно? Это надо протестировать.