defs.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. // package defs -- предметные типы ядра.
  2. package defs
  3. import (
  4. "fmt"
  5. )
  6. // "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/stream_name"
  7. // Int -- алиас для int.
  8. type Int int
  9. // Int -- возвращает целое число по требованию.
  10. func (i Int) Int() int {
  11. return int(i)
  12. }
  13. // ITxtFix -- интерфейс к фиксированной внутренней строке.
  14. type ITxtFix interface {
  15. // Get -- возвращает внутреннюю строку
  16. Get() ATxt
  17. // String -- возвращает строку
  18. String() string
  19. // Len -- возвращает длину внутренней строки
  20. Len() Int
  21. // Byte -- возвращает внутреннюю строку в виде байтов.
  22. Byte() []byte
  23. // Rune -- возвращает внутреннюю строку в виде рун.
  24. Rune() []rune
  25. }
  26. // ITxtMut -- интерфейс к изменяемой внутренней строке.
  27. type ITxtMut interface {
  28. ITxtFix
  29. // Set -- устанавливает внутреннюю строку
  30. Set(ATxt)
  31. }
  32. // ATxt -- алиас для внутренней строки.
  33. type ATxt string
  34. // KTxt -- алиас для внутренней строки.
  35. type KTxt struct {
  36. val ATxt
  37. }
  38. // Txt -- создать новую строку.
  39. func Txt(msg ATxt, arg ...any) *KTxt {
  40. _msg := fmt.Sprintf(string(msg), arg...)
  41. sf := &KTxt{
  42. val: ATxt(_msg),
  43. }
  44. return sf
  45. }
  46. // TxtFix -- создать новую строку.
  47. func TxtFix(msg ATxt, arg ...any) ITxtFix {
  48. sf := Txt(msg, arg...)
  49. return sf
  50. }
  51. // TxtMut -- создать новую мутабельную строку.
  52. func TxtMut(msg ATxt, arg ...any) ITxtMut {
  53. _msg := fmt.Sprintf(string(msg), arg...)
  54. sf := &KTxt{
  55. val: ATxt(_msg),
  56. }
  57. return sf
  58. }
  59. // Get -- возвращает внутреннюю строку.
  60. func (sf KTxt) Get() ATxt {
  61. return sf.val
  62. }
  63. // Set -- изменение внутренней строки
  64. func (sf *KTxt) Set(msg ATxt) {
  65. sf.val = msg
  66. }
  67. // Rune -- возвращает внутреннюю строку в виде рун.
  68. func (sf KTxt) Rune() []rune {
  69. return []rune(sf.val)
  70. }
  71. // Byte -- возвращает внутреннюю строку в виде байтов.
  72. func (sf KTxt) Byte() []byte {
  73. return []byte(sf.val)
  74. }
  75. // Len -- возвращает длину строки.
  76. func (sf KTxt) Len() Int {
  77. return Int(len(sf.val))
  78. }
  79. // String -- возвращает строку по требованию.
  80. func (sf KTxt) String() string {
  81. return string(sf.val)
  82. }
  83. // IErr -- алиас для error.
  84. type IErr interface {
  85. error
  86. ITxtFix
  87. // IsErr -- возвращает true, если ошибка.
  88. IsErr() bool
  89. }
  90. // Err -- обёрнутая ошибка.
  91. type Err struct {
  92. err error
  93. }
  94. // NewErr -- создать новую обёрнутую ошибку.
  95. func NewErr(msg ATxt, arg ...any) IErr {
  96. err := fmt.Errorf(string(msg), arg...)
  97. return &Err{err}
  98. }
  99. // WrapErr -- возвращает обёрнутую ошибку.
  100. func WrapErr(err error) IErr {
  101. return &Err{err}
  102. }
  103. // Rune -- возвращает внутреннюю строку в виде рун.
  104. func (e *Err) Rune() []rune {
  105. return []rune(e.err.Error())
  106. }
  107. // Byte -- возвращает байты из ошибки.
  108. func (e *Err) Byte() []byte {
  109. return []byte(e.err.Error())
  110. }
  111. // IsErr -- возвращает true, если ошибка.
  112. func (e *Err) IsErr() bool {
  113. return e.err != nil
  114. }
  115. // String -- возвращает строковое представление ошибки.
  116. func (e *Err) String() string {
  117. return e.err.Error()
  118. }
  119. // Error -- возвращает хранимую ошибку.
  120. func (e *Err) Error() string {
  121. return e.err.Error()
  122. }
  123. // Get -- возвращает строку по требованию для ошибки.
  124. func (e *Err) Get() ATxt {
  125. return ATxt(e.err.Error())
  126. }
  127. // Len -- возвращает длину ошибки.
  128. func (e *Err) Len() Int {
  129. return Int(len(e.err.Error()))
  130. }
  131. // Time -- метка времени.
  132. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  133. type Time KTxt
  134. // BucketName -- имя сущности.
  135. type BucketName KTxt
  136. // StreamName -- имя потока для ожидания.
  137. // type StreamName = stream_name.AStreamName
  138. // NewStreamName -- создать новое имя потока.
  139. // func NewStreamName(val Str) *stream_name.AStreamName {
  140. // return stream_name.NewAStreamName(val)
  141. // }