use correct connections
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 1m48s

This commit is contained in:
matst80
2024-11-10 18:51:49 +01:00
parent c72b0f54c7
commit 09e005f0e7

View File

@@ -2,7 +2,6 @@ package main
import ( import (
"fmt" "fmt"
"net"
"strings" "strings"
"sync" "sync"
) )
@@ -30,29 +29,16 @@ type RemoteGrain struct {
} }
func NewRemoteGrain(id CartId, address string) *RemoteGrain { func NewRemoteGrain(id CartId, address string) *RemoteGrain {
return &RemoteGrain{ client, err := CartDial(address)
Id: id, if err != nil {
Address: address, return nil
} }
}
func (g *RemoteGrain) Connect() error { return &RemoteGrain{
if g == nil { Id: id,
return fmt.Errorf("grain is deleted") Address: address,
CartClient: client,
} }
if g.connection == nil {
addr := g.Address
if !strings.Contains(addr, ":") {
addr = fmt.Sprintf("%s:1337", addr)
}
client, err := net.Dial("tcp", addr)
if err != nil {
return err
}
g.Conn = client
g.PacketQueue = NewPacketQueue(client)
}
return nil
} }
func (g *RemoteGrain) HandleMessage(message *Message, isReplay bool) ([]byte, error) { func (g *RemoteGrain) HandleMessage(message *Message, isReplay bool) ([]byte, error) {
@@ -92,7 +78,6 @@ func (p *RemoteGrainPool) findRemoteGrain(id CartId) *RemoteGrain {
if !ok || grain == nil { if !ok || grain == nil {
return nil return nil
} }
grain.Connect()
return grain return grain
} }
@@ -100,10 +85,10 @@ func (p *RemoteGrainPool) findOrCreateGrain(id CartId) *RemoteGrain {
grain := p.findRemoteGrain(id) grain := p.findRemoteGrain(id)
if grain == nil { if grain == nil {
grain = NewRemoteGrain(id, p.Host) grain = NewRemoteGrain(id, p.Host)
p.mu.Lock() p.mu.Lock()
p.grains[id] = grain p.grains[id] = grain
p.mu.Unlock() p.mu.Unlock()
grain.Connect()
} }
return grain return grain
} }