Skip to content
This repository was archived by the owner on Jun 29, 2024. It is now read-only.

Commit 8e2da41

Browse files
committed
Simplify
1 parent 487c1de commit 8e2da41

File tree

3 files changed

+37
-73
lines changed

3 files changed

+37
-73
lines changed

uclpcserver/public.go

+2-19
Original file line numberDiff line numberDiff line change
@@ -110,32 +110,15 @@ func (e *UCLPCServer) PendingConsumptionLimits() map[model.MsgCounterType]api.Lo
110110

111111
result := make(map[model.MsgCounterType]api.LoadLimit)
112112

113-
descriptions := util.GetLocalLimitDescriptionsForTypeCategoryDirectionScope(
114-
e.service,
115-
model.LoadControlLimitTypeTypeSignDependentAbsValueLimit,
116-
model.LoadControlCategoryTypeObligation,
117-
model.EnergyDirectionTypeConsume,
118-
model.ScopeTypeTypeActivePowerLimit,
119-
)
120-
if len(descriptions) != 1 || descriptions[0].LimitId == nil {
121-
return result
122-
}
123-
description := descriptions[0]
124-
125113
for key, msg := range e.pendingLimits {
126114
data := msg.Cmd.LoadControlLimitListData
127115

128-
if data == nil || data.LoadControlLimitData == nil || len(data.LoadControlLimitData) == 0 {
129-
continue
130-
}
116+
// elements are only added to the map if all required fields exist
117+
// therefor not check for these are needed here
131118

132119
// we assume there is always only one limit
133120
element := data.LoadControlLimitData[0]
134121

135-
if description.LimitId == nil || element.LimitId == nil || *description.LimitId != *element.LimitId {
136-
continue
137-
}
138-
139122
limit := api.LoadLimit{}
140123

141124
if element.TimePeriod != nil {

uclpcserver/public_test.go

+8-41
Original file line numberDiff line numberDiff line change
@@ -40,47 +40,14 @@ func (s *UCLPCServerSuite) Test_PendingConsumptionLimits() {
4040
MsgCounter: eebusutil.Ptr(msgCounter),
4141
},
4242
Cmd: model.CmdType{
43-
LoadControlLimitListData: &model.LoadControlLimitListDataType{},
44-
},
45-
}
46-
47-
s.sut.loadControlWriteCB(msg)
48-
49-
data = s.sut.PendingConsumptionLimits()
50-
assert.Equal(s.T(), 0, len(data))
51-
52-
msg.Cmd = model.CmdType{
53-
LoadControlLimitListData: &model.LoadControlLimitListDataType{
54-
LoadControlLimitData: []model.LoadControlLimitDataType{},
55-
},
56-
}
57-
58-
s.sut.loadControlWriteCB(msg)
59-
60-
data = s.sut.PendingConsumptionLimits()
61-
assert.Equal(s.T(), 0, len(data))
62-
63-
msg.Cmd = model.CmdType{
64-
LoadControlLimitListData: &model.LoadControlLimitListDataType{
65-
LoadControlLimitData: []model.LoadControlLimitDataType{
66-
{},
67-
},
68-
},
69-
}
70-
71-
s.sut.loadControlWriteCB(msg)
72-
73-
data = s.sut.PendingConsumptionLimits()
74-
assert.Equal(s.T(), 0, len(data))
75-
76-
msg.Cmd = model.CmdType{
77-
LoadControlLimitListData: &model.LoadControlLimitListDataType{
78-
LoadControlLimitData: []model.LoadControlLimitDataType{
79-
{
80-
LimitId: eebusutil.Ptr(model.LoadControlLimitIdType(0)),
81-
IsLimitActive: eebusutil.Ptr(true),
82-
Value: model.NewScaledNumberType(1000),
83-
TimePeriod: model.NewTimePeriodTypeWithRelativeEndTime(time.Minute * 2),
43+
LoadControlLimitListData: &model.LoadControlLimitListDataType{
44+
LoadControlLimitData: []model.LoadControlLimitDataType{
45+
{
46+
LimitId: eebusutil.Ptr(model.LoadControlLimitIdType(0)),
47+
IsLimitActive: eebusutil.Ptr(true),
48+
Value: model.NewScaledNumberType(1000),
49+
TimePeriod: model.NewTimePeriodTypeWithRelativeEndTime(time.Minute * 2),
50+
},
8451
},
8552
},
8653
},

uclpcserver/uclpc.go

+27-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package uclpcserver
22

33
import (
4+
"errors"
45
"sync"
56

67
"github.com/enbility/cemd/api"
@@ -48,14 +49,9 @@ func (c *UCLPCServer) UseCaseName() model.UseCaseNameType {
4849
return model.UseCaseNameTypeLimitationOfPowerConsumption
4950
}
5051

51-
func (e *UCLPCServer) loadControlWriteCB(msg *spineapi.Message) {
52-
e.pendingMux.Lock()
53-
defer e.pendingMux.Unlock()
54-
55-
if msg.RequestHeader == nil || msg.RequestHeader.MsgCounter == nil ||
56-
msg.Cmd.LoadControlLimitListData == nil {
57-
return
58-
}
52+
func (e *UCLPCServer) loadControlLimitId() (limitid model.LoadControlLimitIdType, err error) {
53+
limitid = model.LoadControlLimitIdType(0)
54+
err = errors.New("not found")
5955

6056
descriptions := util.GetLocalLimitDescriptionsForTypeCategoryDirectionScope(
6157
e.service,
@@ -69,16 +65,34 @@ func (e *UCLPCServer) loadControlWriteCB(msg *spineapi.Message) {
6965
}
7066
description := descriptions[0]
7167

72-
data := msg.Cmd.LoadControlLimitListData
68+
if description.LimitId == nil {
69+
return
70+
}
71+
72+
return *description.LimitId, nil
73+
}
7374

74-
if data == nil || data.LoadControlLimitData == nil || len(data.LoadControlLimitData) == 0 {
75+
func (e *UCLPCServer) loadControlWriteCB(msg *spineapi.Message) {
76+
e.pendingMux.Lock()
77+
defer e.pendingMux.Unlock()
78+
79+
if msg.RequestHeader == nil || msg.RequestHeader.MsgCounter == nil ||
80+
msg.Cmd.LoadControlLimitListData == nil {
7581
return
7682
}
7783

78-
// we assume there is always only one limit
79-
element := data.LoadControlLimitData[0]
84+
limitId, err := e.loadControlLimitId()
85+
if err != nil {
86+
return
87+
}
8088

81-
if description.LimitId == nil || element.LimitId == nil || *description.LimitId != *element.LimitId {
89+
data := msg.Cmd.LoadControlLimitListData
90+
91+
// we assume there is always only one limit
92+
if data == nil || data.LoadControlLimitData == nil ||
93+
len(data.LoadControlLimitData) == 0 ||
94+
data.LoadControlLimitData[0].LimitId == nil ||
95+
limitId != *data.LoadControlLimitData[0].LimitId {
8296
return
8397
}
8498

0 commit comments

Comments
 (0)