From 15d966aaadf06e729432ecc3217e75ea6051672d Mon Sep 17 00:00:00 2001 From: matst80 Date: Sun, 10 Nov 2024 16:58:52 +0100 Subject: [PATCH] connect to remote grains if not found --- rpc-pool.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/rpc-pool.go b/rpc-pool.go index ed43092..6a509b1 100644 --- a/rpc-pool.go +++ b/rpc-pool.go @@ -114,22 +114,22 @@ func (p *RemoteGrainPool) findRemoteGrain(id CartId) *RemoteGrain { return grain } -// func (p *RemoteGrainPool) findOrCreateGrain(id CartId) *RemoteGrain { -// grain := p.findRemoteGrain(id) -// if grain == nil { -// grain = NewRemoteGrain(id, p.Host) -// p.mu.Lock() -// p.grains[id] = grain -// p.mu.Unlock() -// grain.Connect() -// } -// return grain -// } +func (p *RemoteGrainPool) findOrCreateGrain(id CartId) *RemoteGrain { + grain := p.findRemoteGrain(id) + if grain == nil { + grain = NewRemoteGrain(id, p.Host) + p.mu.Lock() + p.grains[id] = grain + p.mu.Unlock() + grain.Connect() + } + return grain +} func (p *RemoteGrainPool) Process(id CartId, messages ...Message) ([]byte, error) { var result []byte var err error - grain := p.findRemoteGrain(id) + grain := p.findOrCreateGrain(id) if grain == nil { return nil, fmt.Errorf("grain not found") } @@ -140,7 +140,7 @@ func (p *RemoteGrainPool) Process(id CartId, messages ...Message) ([]byte, error } func (p *RemoteGrainPool) Get(id CartId) ([]byte, error) { - grain := p.findRemoteGrain(id) + grain := p.findOrCreateGrain(id) if grain == nil { return nil, fmt.Errorf("grain not found") }