Skip to content
Snippets Groups Projects
topologyService.go 1.17 KiB
Newer Older
  • Learn to ignore specific revisions
  • package topology
    
    import "code.fbi.h-da.de/danet/gosdn/controller/topology/links"
    
    
    André Sterba's avatar
    André Sterba committed
    // TopologyService defines an interface for a TopologyService
    type TopologyService interface {
    
    	AddLink(links.Link) error
    	UpdateLink(links.Link) error
    	DeleteLink(links.Link) error
    	GetAll() ([]links.Link, error)
    }
    
    // Service is a service for ports
    type Service struct {
    	store Store
    }
    
    // NewTopologyService creates a new TopologyService
    
    André Sterba's avatar
    André Sterba committed
    func NewTopologyService(store Store) TopologyService {
    
    	return &Service{
    		store: store,
    	}
    }
    
    // AddLink adds a new link to the topology
    func (t *Service) AddLink(link links.Link) error {
    
    André Sterba's avatar
    André Sterba committed
    	err := t.store.Add(link)
    
    	if err != nil {
    		return err
    	}
    
    	return nil
    }
    
    // UpdateLink updates an existing link
    func (t *Service) UpdateLink(link links.Link) error {
    
    André Sterba's avatar
    André Sterba committed
    	err := t.store.Update(link)
    
    	if err != nil {
    		return err
    	}
    
    	return nil
    }
    
    // DeleteLink deletes a link
    func (t *Service) DeleteLink(link links.Link) error {
    
    André Sterba's avatar
    André Sterba committed
    	err := t.store.Delete(link)
    
    	if err != nil {
    		return err
    	}
    
    	return nil
    }
    
    // GetAll returns the current topology
    func (t *Service) GetAll() ([]links.Link, error) {
    	topo, err := t.store.GetAll()
    	if err != nil {
    		return topo, err
    	}
    	return topo, nil
    }