Jelajahi Sumber

SVI Добавление тестов; 0.8%

SVI 2 tahun lalu
induk
melakukan
2d83cb5622
34 mengubah file dengan 403 tambahan dan 1210 penghapusan
  1. 2 2
      Makefile
  2. 22 0
      cmd/desktop/main_test.go
  3. 22 0
      cmd/gobus/main_test.go
  4. 22 0
      internal/desktop/desktop_test.go
  5. 1 1
      internal/dict_client_proxy_buffer/dict_client_proxy_buffer.go
  6. 22 0
      internal/dict_client_proxy_buffer/dict_client_proxy_buffer_test.go
  7. 22 0
      internal/dict_topic/dict_topic_test.go
  8. 1 1
      internal/dict_topic/topic/topic.go
  9. 36 0
      internal/dict_topic/topic/topic_test.go
  10. 1 1
      internal/serv_grpc/serv_get/serv_get.go
  11. 22 0
      internal/serv_grpc/serv_get/serv_get_test.go
  12. 1 1
      internal/serv_grpc/serv_grpc.go
  13. 22 0
      internal/serv_grpc/serv_grpc_test.go
  14. 1 1
      internal/serv_grpc/serv_public/serv_public.go
  15. 22 0
      internal/serv_grpc/serv_public/serv_public_test.go
  16. 1 1
      internal/serv_grpc/serv_subcsribe/serv_subscribe.go
  17. 22 0
      internal/serv_grpc/serv_subcsribe/serv_subscribe_test.go
  18. 1 1
      internal/serv_grpc/serv_subscribe_buffer/serv_subscribe_buffer.go
  19. 22 0
      internal/serv_grpc/serv_subscribe_buffer/serv_subscribe_buffer_test.go
  20. 1 1
      internal/serv_grpc/serv_sync/serv_sync.go
  21. 22 0
      internal/serv_grpc/serv_sync/serv_sync_test.go
  22. 22 0
      internal/service/service_test.go
  23. 22 0
      pkg/alias/alias_test.go
  24. 1 1
      pkg/net/cleint_proxy/client_proxy.go
  25. 22 0
      pkg/net/cleint_proxy/client_proxy_test.go
  26. 1 1
      pkg/net/client_proxy_buffer/client_proxy_buffer.go
  27. 22 0
      pkg/net/client_proxy_buffer/client_proxy_buffer_test.go
  28. 0 80
      pkg/net/gobus.proto
  29. 0 801
      pkg/net/netapi/gobus.pb.go
  30. 0 314
      pkg/net/netapi/gobus_grpc.pb.go
  31. 1 1
      pkg/types/iclient_proxy.go
  32. 1 1
      pkg/types/idict_client_proxy_buffer.go
  33. 1 1
      pkg/types/itopic.go
  34. 22 0
      pkg/types/types_test.go

+ 2 - 2
Makefile

@@ -1,4 +1,4 @@
-ADAPT_PATH = ./pkg/net
+ADAPT_PATH = ./api
 serv.build:
 	clear
 	go fmt ./...
@@ -29,7 +29,7 @@ lint:
 test.run:
 	clear
 	go fmt ./...
-	go test -vet=all -race -timeout 30s -coverprofile cover.out ./...
+	go test -vet=all -race -timeout 30s -coverprofile cover.out ./cmd/... ./internal/... ./pkg/...
 	go tool cover -func=cover.out
 proto:
 	clear

+ 22 - 0
cmd/desktop/main_test.go

@@ -0,0 +1,22 @@
+package main
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 22 - 0
cmd/gobus/main_test.go

@@ -0,0 +1,22 @@
+package main
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 22 - 0
internal/desktop/desktop_test.go

@@ -0,0 +1,22 @@
+package desktop
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
internal/dict_client_proxy_buffer/dict_client_proxy_buffer.go

@@ -7,9 +7,9 @@ import (
 	"fmt"
 	"sync"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
 	"p78git.ddns.net/svi/gobus/pkg/net/client_proxy_buffer"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 22 - 0
internal/dict_client_proxy_buffer/dict_client_proxy_buffer_test.go

@@ -0,0 +1,22 @@
+package dict_client_proxy_buffer
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 22 - 0
internal/dict_topic/dict_topic_test.go

@@ -0,0 +1,22 @@
+package dict_topic
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
internal/dict_topic/topic/topic.go

@@ -5,8 +5,8 @@ import (
 	"fmt"
 	"sync"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 36 - 0
internal/dict_topic/topic/topic_test.go

@@ -0,0 +1,36 @@
+package topic
+
+import "testing"
+
+/*
+	Тест для топика шины данных
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestTopic(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+// Создание топика
+func (sf *tester) create() {
+	sf.t.Logf("create")
+	sf.createBad1()
+}
+
+// Нет имени топика
+func (sf *tester) createBad1() {
+	sf.t.Logf("createBad1")
+	topic, err := NewTopic("")
+	if err == nil {
+		sf.t.Fatalf("createBad1(): err==nil")
+	}
+	if topic != nil {
+		sf.t.Fatalf("createBad1(): topic!=nil")
+	}
+}

+ 1 - 1
internal/serv_grpc/serv_get/serv_get.go

@@ -4,7 +4,7 @@ package serv_get
 import (
 	"context"
 
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
+	"p78git.ddns.net/svi/gobus/api/netapi"
 )
 
 type ServGet struct{}

+ 22 - 0
internal/serv_grpc/serv_get/serv_get_test.go

@@ -0,0 +1,22 @@
+package serv_get
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
internal/serv_grpc/serv_grpc.go

@@ -10,12 +10,12 @@ import (
 
 	"google.golang.org/grpc"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/internal/serv_grpc/serv_get"
 	"p78git.ddns.net/svi/gobus/internal/serv_grpc/serv_public"
 	"p78git.ddns.net/svi/gobus/internal/serv_grpc/serv_subcsribe"
 	"p78git.ddns.net/svi/gobus/internal/serv_grpc/serv_subscribe_buffer"
 	"p78git.ddns.net/svi/gobus/internal/serv_grpc/serv_sync"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 22 - 0
internal/serv_grpc/serv_grpc_test.go

@@ -0,0 +1,22 @@
+package serv_grpc
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
internal/serv_grpc/serv_public/serv_public.go

@@ -6,8 +6,8 @@ import (
 	"fmt"
 	"log"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 22 - 0
internal/serv_grpc/serv_public/serv_public_test.go

@@ -0,0 +1,22 @@
+package serv_public
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
internal/serv_grpc/serv_subcsribe/serv_subscribe.go

@@ -5,9 +5,9 @@ import (
 	"fmt"
 	"log"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
 	"p78git.ddns.net/svi/gobus/pkg/net/cleint_proxy"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 22 - 0
internal/serv_grpc/serv_subcsribe/serv_subscribe_test.go

@@ -0,0 +1,22 @@
+package serv_subcsribe
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
internal/serv_grpc/serv_subscribe_buffer/serv_subscribe_buffer.go

@@ -4,8 +4,8 @@ package serv_subscribe_buffer
 import (
 	"fmt"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/net/client_proxy_buffer"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 22 - 0
internal/serv_grpc/serv_subscribe_buffer/serv_subscribe_buffer_test.go

@@ -0,0 +1,22 @@
+package serv_subscribe_buffer
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
internal/serv_grpc/serv_sync/serv_sync.go

@@ -4,7 +4,7 @@ package serv_sync
 import (
 	"context"
 
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
+	"p78git.ddns.net/svi/gobus/api/netapi"
 )
 
 type ServSync struct{}

+ 22 - 0
internal/serv_grpc/serv_sync/serv_sync_test.go

@@ -0,0 +1,22 @@
+package serv_sync
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 22 - 0
internal/service/service_test.go

@@ -0,0 +1,22 @@
+package service
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 22 - 0
pkg/alias/alias_test.go

@@ -0,0 +1,22 @@
+package alias
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
pkg/net/cleint_proxy/client_proxy.go

@@ -7,8 +7,8 @@ import (
 	"sync"
 	"time"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 22 - 0
pkg/net/cleint_proxy/client_proxy_test.go

@@ -0,0 +1,22 @@
+package cleint_proxy
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 1 - 1
pkg/net/client_proxy_buffer/client_proxy_buffer.go

@@ -9,8 +9,8 @@ import (
 	"sync"
 	"time"
 
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/types"
 )
 

+ 22 - 0
pkg/net/client_proxy_buffer/client_proxy_buffer_test.go

@@ -0,0 +1,22 @@
+package client_proxy_buffer
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}

+ 0 - 80
pkg/net/gobus.proto

@@ -1,80 +0,0 @@
-syntax = "proto3";
-
-/*
-    Файл содержит описание сервиса шины данных с необходимыми
-    структурами.
-*/
-
-package parserin;
-
-option go_package = "./netapi";
-
-// GoBus -- сервис шины данных
-service GoBus {
-    // Public -- создаёт запись в открытом разделе хранилище
-    rpc Public(PublicRequest) returns (DefaultResponse) {}
-    // SendSync -- синхронный запрос в топик
-    rpc SendSync(SyncRequest) returns (SyncResponse){}
-    // Subscribe -- подписка по шаблону
-    rpc Subscribe(SubscribeRequest) returns (stream SyncResponse){}
-    // SubscribeBuffer -- подписка по шаблону с буфером на выход
-    rpc SubscribeBuffer (BuffRequest) returns (stream BuffResponse){}
-    // Get -- возвращает значения топиков по шаблону
-    rpc Get(SubscribeRequest) returns (SyncResponse){}
-}
-
-// BuffRequest -- запрос на буферизованную подписку
-message BuffRequest{
-    string Sample            = 1; // Шаблон топиков на подписку
-    string ClientName        = 2; // Уникальное имя клиента
-    int32 MsgSumSizeLimit    = 3; // Предел суммарного количества сообщений
-    int32 MsgSaveSecondLimit = 4; // Предел в секундах как долго хранить буфер с момента последнего доступа
-}
-
-// BuffResponse -- ответ на буферизованную подписку
-message BuffResponse{
-    bool IsLost = 1; // Признак, что часть данных была потеряна
-    bytes Msg   = 2; // Сообщение из буфера
-}
-
-// GetRequest -- ответ на запрос топиков по шаблону
-message GetRequest{
-    repeated bytes Msg = 1; // Список сообщений в ответе
-}
-
-// SubscribeRequest -- запрос на подписку топиков по шаблону
-message SubscribeRequest{
-    string Sample     = 1; // Шаблон топиков на подписку
-    string ClientName = 2; // Уникальное имя клиента
-}
-
-// SyncRequest -- синхронный запрос в шину данных
-message SyncRequest{
-    int32 Source = 1; // Источник данных (0 -- клиент, другое -- реплика)
-    string Topic = 2; // Где опубликовать запрос
-    bytes Msg    = 3; // Байтовое представление сообщения
-}
-
-// TopicMsg -- сообщение топика (внутри шины данных)
-message TopicMsg{
-    int32 Source = 1; // Источник данных (0 -- клиент, другое -- реплика)
-    string Topic = 2; // Где опубликовать запрос
-    bytes Msg    = 3; // Байтовое представление сообщения
-}
-
-// SyncResponse -- ответ на синхронный запрос
-message SyncResponse{
-    bytes Msg = 1; // Содержимое ответа на синхроныый запрос
-}
-// PublicRequest -- запрос на публикацию сообщения
-message PublicRequest {
-    int32 Source = 1; // Источник данных (0 -- клиент, другое -- для реплики)
-    string Topic = 2; // Куда опубликовать сообщение
-    bytes Msg    = 3; // Байтовое представление сообщения
-    string Uuid  = 4; // Уникальная метка сообщения
-    repeated int32 RepliesList = 5; // Список реплик, на которых сообщение уже опубликовано
-}
-
-// DefaultResponse -- возвращаемое значение по умолчанию (ничего не содержит)
-message DefaultResponse {
-}

+ 0 - 801
pkg/net/netapi/gobus.pb.go

@@ -1,801 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.19.4
-// source: pkg/net/gobus.proto
-
-//
-//Файл содержит описание сервиса шины данных с необходимыми
-//структурами.
-
-package netapi
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// BuffRequest -- запрос на буферизованную подписку
-type BuffRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Sample             string `protobuf:"bytes,1,opt,name=Sample,proto3" json:"Sample,omitempty"`                          // Шаблон топиков на подписку
-	ClientName         string `protobuf:"bytes,2,opt,name=ClientName,proto3" json:"ClientName,omitempty"`                  // Уникальное имя клиента
-	MsgSumSizeLimit    int32  `protobuf:"varint,3,opt,name=MsgSumSizeLimit,proto3" json:"MsgSumSizeLimit,omitempty"`       // Предел суммарного количества сообщений
-	MsgSaveSecondLimit int32  `protobuf:"varint,4,opt,name=MsgSaveSecondLimit,proto3" json:"MsgSaveSecondLimit,omitempty"` // Предел в секундах как долго хранить буфер с момента последнего доступа
-}
-
-func (x *BuffRequest) Reset() {
-	*x = BuffRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BuffRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BuffRequest) ProtoMessage() {}
-
-func (x *BuffRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BuffRequest.ProtoReflect.Descriptor instead.
-func (*BuffRequest) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *BuffRequest) GetSample() string {
-	if x != nil {
-		return x.Sample
-	}
-	return ""
-}
-
-func (x *BuffRequest) GetClientName() string {
-	if x != nil {
-		return x.ClientName
-	}
-	return ""
-}
-
-func (x *BuffRequest) GetMsgSumSizeLimit() int32 {
-	if x != nil {
-		return x.MsgSumSizeLimit
-	}
-	return 0
-}
-
-func (x *BuffRequest) GetMsgSaveSecondLimit() int32 {
-	if x != nil {
-		return x.MsgSaveSecondLimit
-	}
-	return 0
-}
-
-// BuffResponse -- ответ на буферизованную подписку
-type BuffResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	IsLost bool   `protobuf:"varint,1,opt,name=IsLost,proto3" json:"IsLost,omitempty"` // Признак, что часть данных была потеряна
-	Msg    []byte `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"`        // Сообщение из буфера
-}
-
-func (x *BuffResponse) Reset() {
-	*x = BuffResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BuffResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BuffResponse) ProtoMessage() {}
-
-func (x *BuffResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BuffResponse.ProtoReflect.Descriptor instead.
-func (*BuffResponse) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *BuffResponse) GetIsLost() bool {
-	if x != nil {
-		return x.IsLost
-	}
-	return false
-}
-
-func (x *BuffResponse) GetMsg() []byte {
-	if x != nil {
-		return x.Msg
-	}
-	return nil
-}
-
-// GetRequest -- ответ на запрос топиков по шаблону
-type GetRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Msg [][]byte `protobuf:"bytes,1,rep,name=Msg,proto3" json:"Msg,omitempty"` // Список сообщений в ответе
-}
-
-func (x *GetRequest) Reset() {
-	*x = GetRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetRequest) ProtoMessage() {}
-
-func (x *GetRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetRequest.ProtoReflect.Descriptor instead.
-func (*GetRequest) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *GetRequest) GetMsg() [][]byte {
-	if x != nil {
-		return x.Msg
-	}
-	return nil
-}
-
-// SubscribeRequest -- запрос на подписку топиков по шаблону
-type SubscribeRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Sample     string `protobuf:"bytes,1,opt,name=Sample,proto3" json:"Sample,omitempty"`         // Шаблон топиков на подписку
-	ClientName string `protobuf:"bytes,2,opt,name=ClientName,proto3" json:"ClientName,omitempty"` // Уникальное имя клиента
-}
-
-func (x *SubscribeRequest) Reset() {
-	*x = SubscribeRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscribeRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscribeRequest) ProtoMessage() {}
-
-func (x *SubscribeRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead.
-func (*SubscribeRequest) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *SubscribeRequest) GetSample() string {
-	if x != nil {
-		return x.Sample
-	}
-	return ""
-}
-
-func (x *SubscribeRequest) GetClientName() string {
-	if x != nil {
-		return x.ClientName
-	}
-	return ""
-}
-
-// SyncRequest -- синхронный запрос в шину данных
-type SyncRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Source int32  `protobuf:"varint,1,opt,name=Source,proto3" json:"Source,omitempty"` // Источник данных (0 -- клиент, другое -- реплика)
-	Topic  string `protobuf:"bytes,2,opt,name=Topic,proto3" json:"Topic,omitempty"`    // Где опубликовать запрос
-	Msg    []byte `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`        // Байтовое представление сообщения
-}
-
-func (x *SyncRequest) Reset() {
-	*x = SyncRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SyncRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SyncRequest) ProtoMessage() {}
-
-func (x *SyncRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SyncRequest.ProtoReflect.Descriptor instead.
-func (*SyncRequest) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *SyncRequest) GetSource() int32 {
-	if x != nil {
-		return x.Source
-	}
-	return 0
-}
-
-func (x *SyncRequest) GetTopic() string {
-	if x != nil {
-		return x.Topic
-	}
-	return ""
-}
-
-func (x *SyncRequest) GetMsg() []byte {
-	if x != nil {
-		return x.Msg
-	}
-	return nil
-}
-
-// TopicMsg -- сообщение топика (внутри шины данных)
-type TopicMsg struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Source int32  `protobuf:"varint,1,opt,name=Source,proto3" json:"Source,omitempty"` // Источник данных (0 -- клиент, другое -- реплика)
-	Topic  string `protobuf:"bytes,2,opt,name=Topic,proto3" json:"Topic,omitempty"`    // Где опубликовать запрос
-	Msg    []byte `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`        // Байтовое представление сообщения
-}
-
-func (x *TopicMsg) Reset() {
-	*x = TopicMsg{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TopicMsg) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TopicMsg) ProtoMessage() {}
-
-func (x *TopicMsg) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TopicMsg.ProtoReflect.Descriptor instead.
-func (*TopicMsg) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *TopicMsg) GetSource() int32 {
-	if x != nil {
-		return x.Source
-	}
-	return 0
-}
-
-func (x *TopicMsg) GetTopic() string {
-	if x != nil {
-		return x.Topic
-	}
-	return ""
-}
-
-func (x *TopicMsg) GetMsg() []byte {
-	if x != nil {
-		return x.Msg
-	}
-	return nil
-}
-
-// SyncResponse -- ответ на синхронный запрос
-type SyncResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Msg []byte `protobuf:"bytes,1,opt,name=Msg,proto3" json:"Msg,omitempty"` // Содержимое ответа на синхроныый запрос
-}
-
-func (x *SyncResponse) Reset() {
-	*x = SyncResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SyncResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SyncResponse) ProtoMessage() {}
-
-func (x *SyncResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SyncResponse.ProtoReflect.Descriptor instead.
-func (*SyncResponse) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *SyncResponse) GetMsg() []byte {
-	if x != nil {
-		return x.Msg
-	}
-	return nil
-}
-
-// PublicRequest -- запрос на публикацию сообщения
-type PublicRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Source      int32   `protobuf:"varint,1,opt,name=Source,proto3" json:"Source,omitempty"`                  // Источник данных (0 -- клиент, другое -- для реплики)
-	Topic       string  `protobuf:"bytes,2,opt,name=Topic,proto3" json:"Topic,omitempty"`                     // Куда опубликовать сообщение
-	Msg         []byte  `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`                         // Байтовое представление сообщения
-	Time        string  `protobuf:"bytes,4,opt,name=Time,proto3" json:"Time,omitempty"`                       // Исходное время сообщения
-	RepliesList []int32 `protobuf:"varint,5,rep,packed,name=RepliesList,proto3" json:"RepliesList,omitempty"` // Список реплик, на которых сообщение уже опубликовано
-}
-
-func (x *PublicRequest) Reset() {
-	*x = PublicRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PublicRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PublicRequest) ProtoMessage() {}
-
-func (x *PublicRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PublicRequest.ProtoReflect.Descriptor instead.
-func (*PublicRequest) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *PublicRequest) GetSource() int32 {
-	if x != nil {
-		return x.Source
-	}
-	return 0
-}
-
-func (x *PublicRequest) GetTopic() string {
-	if x != nil {
-		return x.Topic
-	}
-	return ""
-}
-
-func (x *PublicRequest) GetMsg() []byte {
-	if x != nil {
-		return x.Msg
-	}
-	return nil
-}
-
-func (x *PublicRequest) GetTime() string {
-	if x != nil {
-		return x.Time
-	}
-	return ""
-}
-
-func (x *PublicRequest) GetRepliesList() []int32 {
-	if x != nil {
-		return x.RepliesList
-	}
-	return nil
-}
-
-// DefaultResponse -- возвращаемое значение по умолчанию (ничего не содержит)
-type DefaultResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *DefaultResponse) Reset() {
-	*x = DefaultResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pkg_net_gobus_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DefaultResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DefaultResponse) ProtoMessage() {}
-
-func (x *DefaultResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_pkg_net_gobus_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DefaultResponse.ProtoReflect.Descriptor instead.
-func (*DefaultResponse) Descriptor() ([]byte, []int) {
-	return file_pkg_net_gobus_proto_rawDescGZIP(), []int{8}
-}
-
-var File_pkg_net_gobus_proto protoreflect.FileDescriptor
-
-var file_pkg_net_gobus_proto_rawDesc = []byte{
-	0x0a, 0x13, 0x70, 0x6b, 0x67, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x6f, 0x62, 0x75, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x22,
-	0x9f, 0x01, 0x0a, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x16, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e,
-	0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6c, 0x69,
-	0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x53, 0x75,
-	0x6d, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0f, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69,
-	0x74, 0x12, 0x2e, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x6f,
-	0x6e, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4d,
-	0x73, 0x67, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x6d, 0x69,
-	0x74, 0x22, 0x38, 0x0a, 0x0c, 0x42, 0x75, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1e, 0x0a, 0x0a, 0x47,
-	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x4a, 0x0a, 0x10, 0x53,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x16, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e,
-	0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6c, 0x69,
-	0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14,
-	0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54,
-	0x6f, 0x70, 0x69, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x4a, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4d,
-	0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f,
-	0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63,
-	0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x4d,
-	0x73, 0x67, 0x22, 0x20, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x03, 0x4d, 0x73, 0x67, 0x22, 0x85, 0x01, 0x0a, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14,
-	0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54,
-	0x6f, 0x70, 0x69, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65,
-	0x70, 0x6c, 0x69, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52,
-	0x0b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x11, 0x0a, 0x0f,
-	0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32,
-	0xcc, 0x02, 0x0a, 0x05, 0x47, 0x6f, 0x42, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x50, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x12, 0x17, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x2e, 0x50,
-	0x75, 0x62, 0x6c, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70,
-	0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x08, 0x53, 0x65, 0x6e,
-	0x64, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x15, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e,
-	0x2e, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70,
-	0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x2e, 0x53,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x16, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x0f, 0x53,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x15,
-	0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e,
-	0x2e, 0x42, 0x75, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30,
-	0x01, 0x12, 0x3b, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65,
-	0x72, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x2e,
-	0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a,
-	0x5a, 0x08, 0x2e, 0x2f, 0x6e, 0x65, 0x74, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_pkg_net_gobus_proto_rawDescOnce sync.Once
-	file_pkg_net_gobus_proto_rawDescData = file_pkg_net_gobus_proto_rawDesc
-)
-
-func file_pkg_net_gobus_proto_rawDescGZIP() []byte {
-	file_pkg_net_gobus_proto_rawDescOnce.Do(func() {
-		file_pkg_net_gobus_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_net_gobus_proto_rawDescData)
-	})
-	return file_pkg_net_gobus_proto_rawDescData
-}
-
-var file_pkg_net_gobus_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_pkg_net_gobus_proto_goTypes = []interface{}{
-	(*BuffRequest)(nil),      // 0: parserin.BuffRequest
-	(*BuffResponse)(nil),     // 1: parserin.BuffResponse
-	(*GetRequest)(nil),       // 2: parserin.GetRequest
-	(*SubscribeRequest)(nil), // 3: parserin.SubscribeRequest
-	(*SyncRequest)(nil),      // 4: parserin.SyncRequest
-	(*TopicMsg)(nil),         // 5: parserin.TopicMsg
-	(*SyncResponse)(nil),     // 6: parserin.SyncResponse
-	(*PublicRequest)(nil),    // 7: parserin.PublicRequest
-	(*DefaultResponse)(nil),  // 8: parserin.DefaultResponse
-}
-var file_pkg_net_gobus_proto_depIdxs = []int32{
-	7, // 0: parserin.GoBus.Public:input_type -> parserin.PublicRequest
-	4, // 1: parserin.GoBus.SendSync:input_type -> parserin.SyncRequest
-	3, // 2: parserin.GoBus.Subscribe:input_type -> parserin.SubscribeRequest
-	0, // 3: parserin.GoBus.SubscribeBuffer:input_type -> parserin.BuffRequest
-	3, // 4: parserin.GoBus.Get:input_type -> parserin.SubscribeRequest
-	8, // 5: parserin.GoBus.Public:output_type -> parserin.DefaultResponse
-	6, // 6: parserin.GoBus.SendSync:output_type -> parserin.SyncResponse
-	6, // 7: parserin.GoBus.Subscribe:output_type -> parserin.SyncResponse
-	1, // 8: parserin.GoBus.SubscribeBuffer:output_type -> parserin.BuffResponse
-	6, // 9: parserin.GoBus.Get:output_type -> parserin.SyncResponse
-	5, // [5:10] is the sub-list for method output_type
-	0, // [0:5] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_pkg_net_gobus_proto_init() }
-func file_pkg_net_gobus_proto_init() {
-	if File_pkg_net_gobus_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_pkg_net_gobus_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BuffRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BuffResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscribeRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TopicMsg); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PublicRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pkg_net_gobus_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DefaultResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_pkg_net_gobus_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   9,
-			NumExtensions: 0,
-			NumServices:   1,
-		},
-		GoTypes:           file_pkg_net_gobus_proto_goTypes,
-		DependencyIndexes: file_pkg_net_gobus_proto_depIdxs,
-		MessageInfos:      file_pkg_net_gobus_proto_msgTypes,
-	}.Build()
-	File_pkg_net_gobus_proto = out.File
-	file_pkg_net_gobus_proto_rawDesc = nil
-	file_pkg_net_gobus_proto_goTypes = nil
-	file_pkg_net_gobus_proto_depIdxs = nil
-}

+ 0 - 314
pkg/net/netapi/gobus_grpc.pb.go

@@ -1,314 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.2.0
-// - protoc             v3.19.4
-// source: pkg/net/gobus.proto
-
-package netapi
-
-import (
-	context "context"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-// GoBusClient is the client API for GoBus service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type GoBusClient interface {
-	// Public -- создаёт запись в открытом разделе хранилище
-	Public(ctx context.Context, in *PublicRequest, opts ...grpc.CallOption) (*DefaultResponse, error)
-	// SendSync -- синхронный запрос в топик
-	SendSync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error)
-	// Subscribe -- подписка по шаблону
-	Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (GoBus_SubscribeClient, error)
-	// SubscribeBuffer -- подписка по шаблону с буфером на выход
-	SubscribeBuffer(ctx context.Context, in *BuffRequest, opts ...grpc.CallOption) (GoBus_SubscribeBufferClient, error)
-	// Get -- возвращает значения топиков по шаблону
-	Get(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (*SyncResponse, error)
-}
-
-type goBusClient struct {
-	cc grpc.ClientConnInterface
-}
-
-func NewGoBusClient(cc grpc.ClientConnInterface) GoBusClient {
-	return &goBusClient{cc}
-}
-
-func (c *goBusClient) Public(ctx context.Context, in *PublicRequest, opts ...grpc.CallOption) (*DefaultResponse, error) {
-	out := new(DefaultResponse)
-	err := c.cc.Invoke(ctx, "/parserin.GoBus/Public", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *goBusClient) SendSync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) {
-	out := new(SyncResponse)
-	err := c.cc.Invoke(ctx, "/parserin.GoBus/SendSync", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *goBusClient) Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (GoBus_SubscribeClient, error) {
-	stream, err := c.cc.NewStream(ctx, &GoBus_ServiceDesc.Streams[0], "/parserin.GoBus/Subscribe", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &goBusSubscribeClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type GoBus_SubscribeClient interface {
-	Recv() (*SyncResponse, error)
-	grpc.ClientStream
-}
-
-type goBusSubscribeClient struct {
-	grpc.ClientStream
-}
-
-func (x *goBusSubscribeClient) Recv() (*SyncResponse, error) {
-	m := new(SyncResponse)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *goBusClient) SubscribeBuffer(ctx context.Context, in *BuffRequest, opts ...grpc.CallOption) (GoBus_SubscribeBufferClient, error) {
-	stream, err := c.cc.NewStream(ctx, &GoBus_ServiceDesc.Streams[1], "/parserin.GoBus/SubscribeBuffer", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &goBusSubscribeBufferClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type GoBus_SubscribeBufferClient interface {
-	Recv() (*BuffResponse, error)
-	grpc.ClientStream
-}
-
-type goBusSubscribeBufferClient struct {
-	grpc.ClientStream
-}
-
-func (x *goBusSubscribeBufferClient) Recv() (*BuffResponse, error) {
-	m := new(BuffResponse)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *goBusClient) Get(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (*SyncResponse, error) {
-	out := new(SyncResponse)
-	err := c.cc.Invoke(ctx, "/parserin.GoBus/Get", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// GoBusServer is the server API for GoBus service.
-// All implementations must embed UnimplementedGoBusServer
-// for forward compatibility
-type GoBusServer interface {
-	// Public -- создаёт запись в открытом разделе хранилище
-	Public(context.Context, *PublicRequest) (*DefaultResponse, error)
-	// SendSync -- синхронный запрос в топик
-	SendSync(context.Context, *SyncRequest) (*SyncResponse, error)
-	// Subscribe -- подписка по шаблону
-	Subscribe(*SubscribeRequest, GoBus_SubscribeServer) error
-	// SubscribeBuffer -- подписка по шаблону с буфером на выход
-	SubscribeBuffer(*BuffRequest, GoBus_SubscribeBufferServer) error
-	// Get -- возвращает значения топиков по шаблону
-	Get(context.Context, *SubscribeRequest) (*SyncResponse, error)
-	mustEmbedUnimplementedGoBusServer()
-}
-
-// UnimplementedGoBusServer must be embedded to have forward compatible implementations.
-type UnimplementedGoBusServer struct {
-}
-
-func (UnimplementedGoBusServer) Public(context.Context, *PublicRequest) (*DefaultResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method Public not implemented")
-}
-func (UnimplementedGoBusServer) SendSync(context.Context, *SyncRequest) (*SyncResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SendSync not implemented")
-}
-func (UnimplementedGoBusServer) Subscribe(*SubscribeRequest, GoBus_SubscribeServer) error {
-	return status.Errorf(codes.Unimplemented, "method Subscribe not implemented")
-}
-func (UnimplementedGoBusServer) SubscribeBuffer(*BuffRequest, GoBus_SubscribeBufferServer) error {
-	return status.Errorf(codes.Unimplemented, "method SubscribeBuffer not implemented")
-}
-func (UnimplementedGoBusServer) Get(context.Context, *SubscribeRequest) (*SyncResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
-}
-func (UnimplementedGoBusServer) mustEmbedUnimplementedGoBusServer() {}
-
-// UnsafeGoBusServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to GoBusServer will
-// result in compilation errors.
-type UnsafeGoBusServer interface {
-	mustEmbedUnimplementedGoBusServer()
-}
-
-func RegisterGoBusServer(s grpc.ServiceRegistrar, srv GoBusServer) {
-	s.RegisterService(&GoBus_ServiceDesc, srv)
-}
-
-func _GoBus_Public_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(PublicRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(GoBusServer).Public(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/parserin.GoBus/Public",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(GoBusServer).Public(ctx, req.(*PublicRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _GoBus_SendSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SyncRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(GoBusServer).SendSync(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/parserin.GoBus/SendSync",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(GoBusServer).SendSync(ctx, req.(*SyncRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _GoBus_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(SubscribeRequest)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(GoBusServer).Subscribe(m, &goBusSubscribeServer{stream})
-}
-
-type GoBus_SubscribeServer interface {
-	Send(*SyncResponse) error
-	grpc.ServerStream
-}
-
-type goBusSubscribeServer struct {
-	grpc.ServerStream
-}
-
-func (x *goBusSubscribeServer) Send(m *SyncResponse) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _GoBus_SubscribeBuffer_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(BuffRequest)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(GoBusServer).SubscribeBuffer(m, &goBusSubscribeBufferServer{stream})
-}
-
-type GoBus_SubscribeBufferServer interface {
-	Send(*BuffResponse) error
-	grpc.ServerStream
-}
-
-type goBusSubscribeBufferServer struct {
-	grpc.ServerStream
-}
-
-func (x *goBusSubscribeBufferServer) Send(m *BuffResponse) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _GoBus_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SubscribeRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(GoBusServer).Get(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/parserin.GoBus/Get",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(GoBusServer).Get(ctx, req.(*SubscribeRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-// GoBus_ServiceDesc is the grpc.ServiceDesc for GoBus service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var GoBus_ServiceDesc = grpc.ServiceDesc{
-	ServiceName: "parserin.GoBus",
-	HandlerType: (*GoBusServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "Public",
-			Handler:    _GoBus_Public_Handler,
-		},
-		{
-			MethodName: "SendSync",
-			Handler:    _GoBus_SendSync_Handler,
-		},
-		{
-			MethodName: "Get",
-			Handler:    _GoBus_Get_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "Subscribe",
-			Handler:       _GoBus_Subscribe_Handler,
-			ServerStreams: true,
-		},
-		{
-			StreamName:    "SubscribeBuffer",
-			Handler:       _GoBus_SubscribeBuffer_Handler,
-			ServerStreams: true,
-		},
-	},
-	Metadata: "pkg/net/gobus.proto",
-}

+ 1 - 1
pkg/types/iclient_proxy.go

@@ -1,8 +1,8 @@
 package types
 
 import (
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 )
 
 // IClientProxy -- прокси-клиента на подписку по шаблону на топики

+ 1 - 1
pkg/types/idict_client_proxy_buffer.go

@@ -1,6 +1,6 @@
 package types
 
-import "p78git.ddns.net/svi/gobus/pkg/net/netapi"
+import "p78git.ddns.net/svi/gobus/api/netapi"
 
 // IDictClientProxyBuffer -- потокобезопасный словарь проксей буферизованных клиентов
 type IDictClientProxyBuffer interface {

+ 1 - 1
pkg/types/itopic.go

@@ -1,8 +1,8 @@
 package types
 
 import (
+	"p78git.ddns.net/svi/gobus/api/netapi"
 	"p78git.ddns.net/svi/gobus/pkg/alias"
-	"p78git.ddns.net/svi/gobus/pkg/net/netapi"
 )
 
 // ITopic -- интерфейс топика шины данных

+ 22 - 0
pkg/types/types_test.go

@@ -0,0 +1,22 @@
+package types
+
+import "testing"
+
+/*
+	Тест для ...
+*/
+
+type tester struct {
+	t *testing.T
+}
+
+func TestAny(t *testing.T) {
+	sf := &tester{
+		t: t,
+	}
+	sf.create()
+}
+
+func (sf *tester) create() {
+	sf.t.Log("create")
+}