Skip to content
Snippets Groups Projects
Select Git revision
  • cea80688f6c825c3612b619b023ffe940693a4e4
  • release default protected
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • hotfix/TestHostPool_UpdateNdf_AddFilter
  • XX-4719/announcementChannels
  • xx-4717/logLevel
  • jonah/noob-channel
  • master protected
  • XX-4707/tagDiskJson
  • xx-4698/notification-retry
  • hotfix/notifylockup
  • syncNodes
  • hotfix/localCB
  • XX-4677/NewChanManagerMobile
  • XX-4689/DmSync
  • duplicatePrefix
  • XX-4601/HavenInvites
  • finalizedUICallbacks
  • XX-4673/AdminKeySync
  • debugNotifID
  • anne/test
  • v4.7.5
  • v4.7.4
  • v4.7.3
  • v4.7.2
  • v4.7.1
  • v4.6.3
  • v4.6.1
  • v4.5.0
  • v4.4.4
  • v4.3.11
  • v4.3.8
  • v4.3.7
  • v4.3.6
  • v4.3.5
  • v4.2.0
  • v4.3.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
41 results

search.go

Blame
  • serviceList.go 1.71 KiB
    package ratchet
    
    import (
    	"github.com/pkg/errors"
    	"gitlab.com/elixxir/client/cmix/message"
    	"gitlab.com/elixxir/client/e2e/ratchet/partner"
    	"gitlab.com/xx_network/primitives/id"
    )
    
    // Services is a subsection of the cmix.Manager interface used for services
    type Services interface {
    	AddService(AddService *id.ID, newService message.Service,
    		response message.Processor)
    	DeleteService(clientID *id.ID, toDelete message.Service,
    		processor message.Processor)
    }
    
    func (r *Ratchet) add(m partner.Manager) {
    	r.servicesmux.RLock()
    	defer r.servicesmux.RUnlock()
    	for tag, process := range r.services {
    		r.sInteface.AddService(r.myID, m.MakeService(tag), process)
    	}
    }
    
    func (r *Ratchet) delete(m partner.Manager) {
    	r.servicesmux.RLock()
    	defer r.servicesmux.RUnlock()
    	for tag, process := range r.services {
    		r.sInteface.DeleteService(r.myID, m.MakeService(tag), process)
    	}
    }
    
    func (r *Ratchet) AddService(tag string, processor message.Processor) error {
    	r.servicesmux.Lock()
    	defer r.servicesmux.Unlock()
    	//add the services to the list
    	if _, exists := r.services[tag]; exists {
    		return errors.Errorf("Cannot add more than one service '%s'", tag)
    	}
    	r.services[tag] = processor
    
    	//add a service for every manager
    	for _, m := range r.managers {
    		r.sInteface.AddService(r.myID, m.MakeService(tag), processor)
    	}
    
    	return nil
    }
    
    func (r *Ratchet) RemoveService(tag string) error {
    	r.servicesmux.Lock()
    	defer r.servicesmux.Unlock()
    
    	oldServiceProcess, exists := r.services[tag]
    	if !exists {
    		return errors.Errorf("Cannot remove a service that doesnt "+
    			"exist: '%s'", tag)
    	}
    
    	delete(r.services, tag)
    
    	for _, m := range r.managers {
    		r.sInteface.DeleteService(r.myID, m.MakeService(tag), oldServiceProcess)
    	}
    
    	return nil
    }