@@ -13,10 +13,14 @@ import (
1313)
1414
1515type PFCPEntityInterface interface {
16+ NodeID () * ie.IE
17+ RecoveryTimeStamp () * ie.IE
18+ CreatePFCPAssociation (association * PFCPAssociation ) error
1619 RemovePFCPAssociation (association * PFCPAssociation ) error
20+ ReplyTo (ipAddress net.Addr , requestMessage message.Message , responseMessage message.Message ) error
1721}
1822
19- func (entity * PFCPEntity ) ReplyTo (ipAddress net.Addr , requestMessage message.Message , responseMessage message.Message ) error {
23+ func (entity PFCPEntity ) ReplyTo (ipAddress net.Addr , requestMessage message.Message , responseMessage message.Message ) error {
2024 if ! pfcputil .IsMessageTypeRequest (requestMessage .MessageType ()) {
2125 return fmt .Errorf ("requestMessage shall be a Request Message" )
2226 }
@@ -40,14 +44,22 @@ func (entity *PFCPEntity) ReplyTo(ipAddress net.Addr, requestMessage message.Mes
4044 return nil
4145}
4246
43- type handler = func (entity * PFCPEntity , senderAddr net.Addr , msg message.Message ) error
47+ type handler = func (entity PFCPEntityInterface , senderAddr net.Addr , msg message.Message ) error
4448
4549type PFCPEntity struct {
46- NodeID * ie.IE
47- RecoveryTimeStamp * ie.IE
50+ nodeID * ie.IE
51+ recoveryTimeStamp * ie.IE
4852 handlers map [pfcputil.MessageType ]handler
4953 conn * net.UDPConn
5054 mu sync.Mutex
55+ iface PFCPEntityInterface
56+ }
57+
58+ func (e PFCPEntity ) NodeID () * ie.IE {
59+ return e .nodeID
60+ }
61+ func (e PFCPEntity ) RecoveryTimeStamp () * ie.IE {
62+ return e .recoveryTimeStamp
5163}
5264
5365func newDefaultPFCPEntityHandlers () map [pfcputil.MessageType ]handler {
@@ -58,17 +70,21 @@ func newDefaultPFCPEntityHandlers() map[pfcputil.MessageType]handler {
5870
5971func NewPFCPEntity (nodeID string ) PFCPEntity {
6072 return PFCPEntity {
61- NodeID : pfcputil .CreateNodeID (nodeID ),
62- RecoveryTimeStamp : nil ,
73+ nodeID : pfcputil .CreateNodeID (nodeID ),
74+ recoveryTimeStamp : nil ,
6375 handlers : newDefaultPFCPEntityHandlers (),
6476 conn : nil ,
6577 mu : sync.Mutex {},
78+ iface : nil ,
6679 }
6780}
6881
6982func (e * PFCPEntity ) Start () error {
70- e .RecoveryTimeStamp = ie .NewRecoveryTimeStamp (time .Now ())
71- ipAddr , err := e .NodeID .NodeID ()
83+ if e .iface == nil {
84+ return fmt .Errorf ("PFCPEntity is incorrectly initialized" )
85+ }
86+ e .recoveryTimeStamp = ie .NewRecoveryTimeStamp (time .Now ())
87+ ipAddr , err := e .NodeID ().NodeID ()
7288 if err != nil {
7389 return err
7490 }
@@ -95,7 +111,7 @@ func (e *PFCPEntity) Start() error {
95111 continue
96112 }
97113 if f , exists := e .handlers [msg .MessageType ()]; exists {
98- err := f (e , addr , msg )
114+ err := f (e . iface , addr , msg )
99115 if err != nil {
100116 log .Println (err )
101117 }
0 commit comments