Skip to content
Snippets Groups Projects
routing.go 1.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • package service
    
    import (
    	"context"
    	"time"
    
    	"code.fbi.h-da.de/danet/costaquanta/ctrl/internal/core/model"
    	"go.opentelemetry.io/otel/trace"
    	"go.uber.org/zap"
    )
    
    type Routing struct {
    	logger *zap.SugaredLogger
    	tracer trace.Tracer
    }
    
    type RequestRouteDTO struct {
    	SourceKMSID     string
    	TargetKMSID     string
    	CryptoAlgorithm model.RoutingCryptoAlgorithm
    }
    
    type AnnouncePayloadRelayRequestDTO struct {
    	RequestID string
    	RouteID   string
    }
    
    type PayloadRelayFinishedRequestDTO struct {
    	RequestID string
    	RouteID   string
    }
    
    type PayloadRelayErrorDTO struct {
    	RequestID string
    	RouteID   string
    	ErrorType string
    }
    
    type PushKeyStoreFillLevelRequestDTO struct {
    	KMSID     string
    	PeerID    string
    	FillLevel int64
    }
    
    func NewRoutingService(logger *zap.SugaredLogger, tracer trace.Tracer) *Routing {
    	return &Routing{
    		logger: logger,
    		tracer: tracer,
    	}
    }
    
    func (r *Routing) RequestRoute(ctx context.Context, req RequestRouteDTO) (model.Route, error) {
    	_, span := r.tracer.Start(ctx, "request-route")
    	defer span.End()
    
    	// calculate route
    	time.Sleep(time.Second)
    
    	return model.Route{
    		ID: "1337",
    	}, nil
    }
    
    func (r *Routing) AnnouncePayloadRelay(
    	ctx context.Context,
    	req AnnouncePayloadRelayRequestDTO,
    ) error {
    	_, span := r.tracer.Start(ctx, "announce-payload-relay")
    	defer span.End()
    
    	// gossip routes to KMS
    
    	return nil
    }
    
    func (r *Routing) PayloadRelayFinished(
    	ctx context.Context,
    	req PayloadRelayFinishedRequestDTO,
    ) error {
    	_, span := r.tracer.Start(ctx, "payload-relay-finished")
    	defer span.End()
    
    	return nil
    }
    
    func (r *Routing) PayloadRelayError(ctx context.Context, req PayloadRelayErrorDTO) error {
    	_, span := r.tracer.Start(ctx, "payload-relay-error")
    	defer span.End()
    
    	return nil
    }
    
    func (r *Routing) PushKeyStoreFillLevel(
    	ctx context.Context,
    	req PushKeyStoreFillLevelRequestDTO,
    ) error {
    	_, span := r.tracer.Start(ctx, "push-key-store-fill-level")
    	defer span.End()
    
    	return nil
    }