-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathconstructor.go
More file actions
55 lines (46 loc) · 1.7 KB
/
constructor.go
File metadata and controls
55 lines (46 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package transport
import (
"net"
"sync"
"github.com/HyperloopUPV-H8/h9-backend/pkg/abstraction"
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/tftp"
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/presentation"
"github.com/rs/zerolog"
)
func NewTransport(baseLogger zerolog.Logger) *Transport {
transport := &Transport{
connectionsMx: &sync.RWMutex{},
connections: make(map[abstraction.TransportTarget]net.Conn),
idToTarget: make(map[abstraction.PacketId]abstraction.TransportTarget),
ipToTarget: make(map[string]abstraction.TransportTarget),
logger: baseLogger,
errChan: make(chan error, 100),
}
go transport.consumeErrors()
return transport
}
func (transport *Transport) WithDecoder(decoder *presentation.Decoder) *Transport {
transport.decoder = decoder
transport.logger.Trace().Msg("set decoder")
return transport
}
func (transport *Transport) WithEncoder(encoder *presentation.Encoder) *Transport {
transport.encoder = encoder
transport.logger.Trace().Msg("set encoder")
return transport
}
func (transport *Transport) WithTFTP(client *tftp.Client) *Transport {
transport.tftp = client
transport.logger.Trace().Msg("set TFTP")
return transport
}
func (transport *Transport) SetIdTarget(id abstraction.PacketId, target abstraction.TransportTarget) *Transport {
transport.idToTarget[id] = target
transport.logger.Trace().Uint16("id", uint16(id)).Str("target", string(target)).Msg("set id for target")
return transport
}
func (transport *Transport) SetTargetIp(ip string, target abstraction.TransportTarget) *Transport {
transport.ipToTarget[ip] = target
transport.logger.Trace().Str("ip", ip).Str("target", string(target)).Msg("set ip for target")
return transport
}