defs.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // package defs -- предметные типы ядра.
  2. package defs
  3. import "fmt"
  4. // "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/stream_name"
  5. // Int -- алиас для int.
  6. type Int int
  7. // Int -- возвращает целое число по требованию.
  8. func (i Int) Int() int {
  9. return int(i)
  10. }
  11. // IStr --интерфейс к гибкой строке
  12. type IStr interface {
  13. // Str -- возвращает внутреннюю строку
  14. Str() Str
  15. // String -- возвращает прямую строку
  16. String()string
  17. }
  18. // Str -- алиас для string.
  19. type Str string
  20. // NewStr -- создать новую строку.
  21. func NewStr(msg string, arg ...any) IStr {
  22. return Str(fmt.Sprintf(msg, arg...))
  23. }
  24. // Str -- возвращает внутреннюю строку.
  25. func (s Str) Str() Str {
  26. return s
  27. }
  28. // String -- возвращает строку по требованию.
  29. func (s Str) String() string {
  30. return string(s)
  31. }
  32. // IErr -- алиас для error.
  33. type IErr interface {
  34. error
  35. IStr
  36. }
  37. // Err -- обёрнутая ошибка.
  38. type Err struct {
  39. err error
  40. }
  41. // NewErr -- создать новую обёрнутую ошибку.
  42. func NewErr(msg Str, arg ...any) IErr {
  43. err := fmt.Errorf(msg.String(), arg...)
  44. return &Err{err}
  45. }
  46. // WrapErr -- возвращает обёрнутую ошибку.
  47. func WrapErr(err error) IErr {
  48. return &Err{err}
  49. }
  50. // String -- возвращает строковое представление ошибки.
  51. func (e *Err) String() string {
  52. return e.err.Error()
  53. }
  54. // Error -- возвращает хранимую ошибку.
  55. func (e *Err) Error() string {
  56. return e.err.Error()
  57. }
  58. // Str -- возвращает строку по требованию для ошибки.
  59. func (e *Err) Str() Str {
  60. return Str(e.err.Error())
  61. }
  62. // Time -- метка времени.
  63. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  64. type Time Str
  65. // BucketName -- имя сущности.
  66. type BucketName Str
  67. // StreamName -- имя потока для ожидания.
  68. //
  69. //go:fix inline
  70. // type StreamName = stream_name.AStreamName
  71. // NewStreamName -- создать новое имя потока.
  72. //
  73. //go:fix inline
  74. // func NewStreamName(val Str) *stream_name.AStreamName {
  75. // return stream_name.NewAStreamName(val)
  76. // }