/
uzer_007
/
Rixea
Обзор
Документация
Войти
/
uzer_007
/
Rixea
Код
Запросы
0
Задачи
Вики
Пакеты
5
Релизы
2
CI/CD
Аналитика
Безопасность
master
modules/queue/base.go
42 строки
888 B
uzer_007
feat: первая версия Rixea
02 авг 2026, 22:16
02 авг 2026, 22:16
d4f7504
Код
Авторство
О чём код?
// Copyright 2026 Uzer_007. All rights reserved. // SPDX-License-Identifier: MIT package queue import ( "context" "time" ) var pushBlockTime = 5 * time.Second type baseQueue interface { PushItem(ctx context.Context, data []byte) error PopItem(ctx context.Context) ([]byte, error) HasItem(ctx context.Context, data []byte) (bool, error) Len(ctx context.Context) (int, error) Close() error RemoveAll(ctx context.Context) error } func popItemByChan(ctx context.Context, popItemFn func(ctx context.Context) ([]byte, error)) (chanItem chan []byte, chanErr chan error) { chanItem = make(chan []byte) chanErr = make(chan error) go func() { for { it, err := popItemFn(ctx) if err != nil { close(chanItem) chanErr <- err return } if it == nil { close(chanItem) close(chanErr) return } chanItem <- it } }() return chanItem, chanErr }