| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package parse_sec
- import (
- "fmt"
- "strconv"
- "sync"
- "wartank/pkg/alias"
- "wartank/pkg/types"
- )
- /*
- Парсер секунд
- */
- // ПарсерСекунд -- парсер секунд
- type ПарсерСекунд struct {
- знач alias.Сек
- блок sync.RWMutex
- }
- // НовПарсерСекунд -- возвращает новый *ParseSec
- func НовПарсерСекунд() *ПарсерСекунд {
- сам := &ПарсерСекунд{}
- _ = types.ИПарсерСек(сам)
- return сам
- }
- // ПолучМилСек -- возвращает число милСек в хранимых секундах
- func (сам *ПарсерСекунд) ПолучМилСек() alias.МилСек {
- return alias.МилСек(сам.знач * 1_000)
- }
- // Получ -- возвращает хранимое значение секунд
- func (сам *ПарсерСекунд) Получ() alias.Сек {
- сам.блок.RLock()
- defer сам.блок.RUnlock()
- return сам.знач
- }
- // String -- возвращает строковое значение секунд
- func (сам *ПарсерСекунд) String() string {
- сам.блок.RLock()
- defer сам.блок.RUnlock()
- res := fmt.Sprintf("%02d", сам.знач)
- return res
- }
- // Сброс -- сбрасывает значение секунд
- func (сам *ПарсерСекунд) Сброс() {
- сам.блок.Lock()
- defer сам.блок.Unlock()
- сам.знач = 0
- }
- // Уст -- устанавливает значение секунд
- func (сам *ПарсерСекунд) Уст(стрСек alias.Время) error {
- сам.блок.Lock()
- defer сам.блок.Unlock()
- _цСек, err := strconv.Atoi(string(стрСек))
- if err != nil {
- return fmt.Errorf("ПарсерСекунд.Уст(): секунды(%v) не число, ош=\n\t%w", стрСек, err)
- }
- цСек := alias.Сек(_цСек)
- if err := сам.уст(цСек); err != nil {
- return fmt.Errorf("ПарсерСекунд.Уст(): при внутренней установке, ош=\n\t%w", err)
- }
- return nil
- }
- // УстСек -- устанавливает хранимое значение секунд
- func (сам *ПарсерСекунд) УстСек(цСек alias.Сек) error {
- сам.блок.Lock()
- defer сам.блок.Unlock()
- if ош := сам.уст(цСек); ош != nil {
- return fmt.Errorf("ПарсерСекунд.Уст(): при установке числа секунд, ош=\n\t%w", ош)
- }
- return nil
- }
- // Внутренняя установка значения секунд
- func (сам *ПарсерСекунд) уст(цСек alias.Сек) error {
- if цСек >= 60 {
- return fmt.Errorf("ПарсерСекунд.уст(): секунды(%v) не в диапазоне 0..60", цСек)
- }
- сам.знач = цСек
- return nil
- }
|