grpc

package
v1.64.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 3, 2026 License: MIT Imports: 11 Imported by: 0

README

Package grpc

Пакет grpc предоставляет инструменты для создания и управления gRPC-серверами, включая обработку аутентификации, маршрутизацию запросов и интеграцию с метаданными. Поддерживает гибкую настройку обработчиков, безопасное обновление сервисов и работу с заголовками.

Types

Server

gRPC-сервер с поддержкой динамического обновления обработчиков.

Methods:

DefaultServer(restOptions ...grpc.ServerOption) *Server

Создать gRPC-сервер с настройками по умолчанию (максимальный размер сообщения 64 МБ).

NewServer(opts ...grpc.ServerOption) *Server

Создать кастомный сервер с указанными опциями gRPC.

(s *Server) Upgrade(service isp.BackendServiceServer)

Атомарно обновить обработчик сервиса без остановки сервера.

(s *Server) ListenAndServe(address string) error

Запустить сервер на указанном адресе.

(s *Server) Serve(listener net.Listener) error

Запустить сервер на существующем listener.

(s *Server) Shutdown()

Остановить сервер

Mux

Мультиплексор для маршрутизации gRPC-запросов. Регистрирует обработчики по имени эндпоинта.

Methods:

NewMux() *Mux

Создать новый мультиплексор.

(m *Mux) Handle(endpoint string, handler HandlerFunc) *Mux

Зарегистрировать обработчик для указанного эндпоинта.

(m *Mux) Request(ctx context.Context, message *isp.Message) (*isp.Message, error)

Обрабатывает входящий запрос, определяя эндпоинт через заголовок ProxyMethodNameHeader.

AuthData

Структура для работы с метаданными аутентификации в gRPC-запросах. Оборачивает metadata.MD и предоставляет методы для извлечения идентификаторов из заголовков.

Methods:

(i AuthData) SystemId() (int, error)

Получить идентификатор системы из заголовка x-system-identity.

(i AuthData) DomainId() (int, error)

Получить идентификатор домена из заголовка x-domain-identity.

(i AuthData) ServiceId() (int, error)

Получить идентификатор сервиса из заголовка x-service-identity.

(i AuthData) ApplicationId() (int, error)

Получить идентификатор системы из заголовка x-application-identity.

(i AuthData) ApplicationName() (int, error)

Получить название системы из заголовка x-application-name.

(i AuthData) UserId() (int, error)

Получить идентификатор пользователя из заголовка x-user-identity.

(i AuthData) DeviceId() (int, error)

Получить идентификатор устройства из заголовка x-device-identity.

(i AuthData) UserToken() (string, error)

Получить токен пользователя из заголовка x-user-token.

(i AuthData) DeviceToken() (string, error)

Получить токен устройства из заголовка x-device-token.

Functions

StringFromMd(key string, md metadata.MD) (string, error)

Извлекает строковое значение из метаданных по ключу.

IntFromMd(key string, md metadata.MD) (int, error)

Извлекает целочисленное значение из метаданных по ключу.

Usage

Default usage flow
package main

import (
	"context"
	"log"

	"github.com/txix-open/isp-kit/grpc"
	"github.com/txix-open/isp-kit/grpc/isp"
	"github.com/txix-open/isp-kit/shutdown"
)

func main() {
	mux := grpc.NewMux()
	mux.Handle("/get_users", func(ctx context.Context, msg *isp.Message) (*isp.Message, error) {
		/* put here business logic */
		return new(isp.Message), nil
	})

	srv := grpc.DefaultServer()
	srv.Upgrade(mux)

	shutdown.On(func() { /* waiting for SIGINT & SIGTERM signals */
		log.Println("shutting down...")
		srv.Shutdown()
		log.Println("shutdown completed")
	})

	err := srv.ListenAndServe(":8080")
	if err != nil {
		log.Fatal(err)
	}
}

Documentation

Index

Constants

View Source
const (
	ApplicationIdHeader   = "x-application-identity"
	ApplicationNameHeader = "x-application-name"
	UserIdHeader          = "x-user-identity"
	DeviceIdHeader        = "x-device-identity"
	ServiceIdHeader       = "x-service-identity"
	DomainIdHeader        = "x-domain-identity"
	SystemIdHeader        = "x-system-identity"
	UserTokenHeader       = "x-user-token"
	DeviceTokenHeader     = "x-device-token"
)
View Source
const (
	DefaultMaxSizeByte = 64 * 1024 * 1024
)
View Source
const (
	ProxyMethodNameHeader = "proxy_method_name"
)

Variables

This section is empty.

Functions

func IntFromMd added in v1.64.4

func IntFromMd(key string, md metadata.MD) (int, error)

func StringFromMd

func StringFromMd(key string, md metadata.MD) (string, error)

Types

type AuthData

type AuthData metadata.MD

func (AuthData) ApplicationId

func (i AuthData) ApplicationId() (int, error)

func (AuthData) ApplicationName added in v1.64.4

func (i AuthData) ApplicationName() (string, error)

func (AuthData) DeviceId

func (i AuthData) DeviceId() (int, error)

func (AuthData) DeviceToken

func (i AuthData) DeviceToken() (string, error)

func (AuthData) DomainId

func (i AuthData) DomainId() (int, error)

func (AuthData) ServiceId

func (i AuthData) ServiceId() (int, error)

func (AuthData) SystemId

func (i AuthData) SystemId() (int, error)

func (AuthData) UserId

func (i AuthData) UserId() (int, error)

func (AuthData) UserToken

func (i AuthData) UserToken() (string, error)

type HandlerFunc

type HandlerFunc func(ctx context.Context, message *isp.Message) (*isp.Message, error)

type Middleware

type Middleware func(next HandlerFunc) HandlerFunc

type Mux

type Mux struct {
	isp.UnimplementedBackendServiceServer
	// contains filtered or unexported fields
}

func NewMux

func NewMux() *Mux

func (*Mux) Handle

func (m *Mux) Handle(endpoint string, handler HandlerFunc) *Mux

func (*Mux) Request

func (m *Mux) Request(ctx context.Context, message *isp.Message) (*isp.Message, error)

func (*Mux) RequestStream

func (m *Mux) RequestStream(_ isp.BackendService_RequestStreamServer) error

type Server

type Server struct {
	// contains filtered or unexported fields
}

func DefaultServer

func DefaultServer(restOptions ...grpc.ServerOption) *Server

func NewServer

func NewServer(opts ...grpc.ServerOption) *Server

func (*Server) ListenAndServe

func (s *Server) ListenAndServe(address string) error

func (*Server) Serve

func (s *Server) Serve(listener net.Listener) error

func (*Server) Shutdown

func (s *Server) Shutdown()

func (*Server) Upgrade

func (s *Server) Upgrade(service isp.BackendServiceServer)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL