diff --git a/mem/vm/protocol.go b/mem/vm/protocol.go index 1d1bcec..42796e4 100644 --- a/mem/vm/protocol.go +++ b/mem/vm/protocol.go @@ -28,7 +28,12 @@ func (r *TranslationReq) Clone() sim.Msg { // GenerateRsp generates response to originral translation request func (r *TranslationReq) GenerateRsp(page Page) sim.Rsp { - rsp := TranslationRspBuilder{}.WithSrc(r.Dst).WithDst(r.Src).WithRspTo(r.ID).WithPage(page).Build() + rsp := TranslationRspBuilder{}. + WithSrc(r.Dst). + WithDst(r.Src). + WithRspTo(r.ID). + WithPage(page). + Build() return rsp } diff --git a/noc/standalone/agent.go b/noc/standalone/agent.go index af32695..e0e9d65 100644 --- a/noc/standalone/agent.go +++ b/noc/standalone/agent.go @@ -20,7 +20,9 @@ func (m *TrafficMsg) Meta() *sim.MsgMeta { // Clone returns cloned TrafficMsg func (m *TrafficMsg) Clone() sim.Msg { - return m + clone_msg := NewTrafficMsg(m.Src, m.Dst, m.TrafficBytes) + + return clone_msg } // NewTrafficMsg creates a new traffic message diff --git a/sim/examples/ping/comp.go b/sim/examples/ping/comp.go index b97ba9b..ee270a6 100644 --- a/sim/examples/ping/comp.go +++ b/sim/examples/ping/comp.go @@ -3,7 +3,6 @@ package ping import ( "fmt" "reflect" - "strconv" "github.com/sarchlab/akita/v4/sim" "github.com/sarchlab/akita/v4/sim/directconnection" @@ -25,6 +24,7 @@ func (p *PingMsg) Clone() sim.Msg { func (p *PingMsg) GenerateRsp() sim.Rsp { rsp := &PingRsp{} + rsp.ID = sim.GetIDGenerator().Generate() return rsp } @@ -44,7 +44,7 @@ func (p *PingRsp) Clone() sim.Msg { } func (p *PingRsp) GetRspTo() string { - return strconv.Itoa(p.SeqID) + return p.ID } type StartPingEvent struct { diff --git a/sim/examples/ticking_ping/comp.go b/sim/examples/ticking_ping/comp.go index 98d9f3a..bfb54b0 100644 --- a/sim/examples/ticking_ping/comp.go +++ b/sim/examples/ticking_ping/comp.go @@ -2,7 +2,6 @@ package ticking_ping import ( "fmt" - "strconv" "github.com/sarchlab/akita/v4/sim" "github.com/sarchlab/akita/v4/sim/directconnection" @@ -27,6 +26,7 @@ func (p *PingMsg) Clone() sim.Msg { func (p *PingRsp) GenerateRsp() sim.Rsp { rsp := &PingRsp{} + rsp.ID = sim.GetIDGenerator().Generate() return rsp } @@ -49,7 +49,7 @@ func (p *PingRsp) Clone() sim.Msg { } func (p *PingRsp) GetRspTo() string { - return strconv.Itoa(p.SeqID) + return p.ID } type pingTransaction struct { diff --git a/sim/msg.go b/sim/msg.go index 8719033..6479d44 100644 --- a/sim/msg.go +++ b/sim/msg.go @@ -22,6 +22,11 @@ type Rsp interface { GetRspTo() string } +type Request interface { + Msg + GenerateRsp() Rsp +} + // GeneralRsp is a general response message that is used to indicate the // completion of a request. type GeneralRsp struct { diff --git a/sim/port.go b/sim/port.go index 3898138..9e33348 100644 --- a/sim/port.go +++ b/sim/port.go @@ -73,7 +73,10 @@ func (m *sampleMsg) Meta() *MsgMeta { } func (m *sampleMsg) Clone() Msg { - return m + cloneMsg := *m + cloneMsg.ID = GetIDGenerator().Generate() + + return &cloneMsg } // Name returns the name of the port.