mirror of
https://github.com/logos-messaging/go-libp2p-rendezvous.git
synced 2026-01-09 00:03:08 +00:00
rendezvous service sync: hook for federation
This commit is contained in:
parent
7d72fc79b3
commit
dbe6b0ddb5
27
svc.go
27
svc.go
@ -21,16 +21,22 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type RendezvousService struct {
|
type RendezvousService struct {
|
||||||
DB *DB
|
DB *DB
|
||||||
|
rzs []RendezvousSync
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRendezvousService(ctx context.Context, host host.Host, dbpath string) (*RendezvousService, error) {
|
type RendezvousSync interface {
|
||||||
|
Register(p peer.ID, ns string, addrs [][]byte, ttl int)
|
||||||
|
Unregister(p peer.ID, ns string)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRendezvousService(ctx context.Context, host host.Host, dbpath string, rzs ...RendezvousSync) (*RendezvousService, error) {
|
||||||
db, err := OpenDB(ctx, dbpath)
|
db, err := OpenDB(ctx, dbpath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
rz := &RendezvousService{DB: db}
|
rz := &RendezvousService{DB: db, rzs: rzs}
|
||||||
host.SetStreamHandler(RendezvousProto, rz.handleStream)
|
host.SetStreamHandler(RendezvousProto, rz.handleStream)
|
||||||
return rz, nil
|
return rz, nil
|
||||||
}
|
}
|
||||||
@ -164,6 +170,10 @@ func (rz *RendezvousService) handleRegister(p peer.ID, m *pb.Message_Register) *
|
|||||||
return newRegisterResponseError(pb.Message_E_INTERNAL_ERROR, err.Error())
|
return newRegisterResponseError(pb.Message_E_INTERNAL_ERROR, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, rzs := range rz.rzs {
|
||||||
|
rzs.Register(p, ns, maddrs, ttl)
|
||||||
|
}
|
||||||
|
|
||||||
return newRegisterResponse()
|
return newRegisterResponse()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,7 +192,16 @@ func (rz *RendezvousService) handleUnregister(p peer.ID, m *pb.Message_Unregiste
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return rz.DB.Unregister(p, ns)
|
err := rz.DB.Unregister(p, ns)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, rzs := range rz.rzs {
|
||||||
|
rzs.Unregister(p, ns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rz *RendezvousService) handleDiscover(p peer.ID, m *pb.Message_Discover) *pb.Message_DiscoverResponse {
|
func (rz *RendezvousService) handleDiscover(p peer.ID, m *pb.Message_Discover) *pb.Message_DiscoverResponse {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user