Skip to content
Snippets Groups Projects
csbi.go 774 B
Newer Older
  • Learn to ignore specific revisions
  • package server
    
    import (
    	"context"
    	"time"
    
    
    	log "github.com/sirupsen/logrus"
    
    
    	cpb "code.fbi.h-da.de/cocsn/api/go/gosdn/csbi"
    	"code.fbi.h-da.de/cocsn/gosdn/nucleus"
    	"google.golang.org/grpc/codes"
    	"google.golang.org/grpc/status"
    )
    
    type csbi struct {
    	cpb.UnimplementedCsbiServer
    }
    
    func (s csbi) Hello(ctx context.Context, syn *cpb.Syn) (*cpb.Ack, error) {
    	ch, err := pndc.PendingChannels(nucleus.FromString(syn.Id))
    	if err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		log.Error(err)
    		return nil, status.Errorf(codes.Aborted, "pending channel %v", err)
    
    	}
    	ch <- nucleus.DeviceDetails{
    		ID:      syn.Id,
    		Address: syn.Address,
    	}
    
    	details := <-ch
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	log.Infof("ack to csbi %v", syn.Id)
    
    	return &cpb.Ack{
    
    		Timestamp:       time.Now().UnixNano(),
    
    		TransportOption: details.TransportOption,
    	}, nil