Ocpp: fix a race condition
This commit is contained in:
parent
cff845195f
commit
3d169f64fe
3 changed files with 9 additions and 31 deletions
|
|
@ -44,6 +44,9 @@ func (cs *CS) errorHandler(errC <-chan error) {
|
|||
}
|
||||
|
||||
func (cs *CS) ChargepointByID(id string) (*CP, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, ok := cs.cps[id]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unknown charge point: %s", id)
|
||||
|
|
|
|||
|
|
@ -47,9 +47,6 @@ func (cs *CS) TriggerMessageRequest(id string, requestedMessage remotetrigger.Me
|
|||
// cp actions
|
||||
|
||||
func (cs *CS) OnAuthorize(id string, request *core.AuthorizeRequest) (*core.AuthorizeConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -59,9 +56,6 @@ func (cs *CS) OnAuthorize(id string, request *core.AuthorizeRequest) (*core.Auth
|
|||
}
|
||||
|
||||
func (cs *CS) OnBootNotification(id string, request *core.BootNotificationRequest) (*core.BootNotificationConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -71,9 +65,6 @@ func (cs *CS) OnBootNotification(id string, request *core.BootNotificationReques
|
|||
}
|
||||
|
||||
func (cs *CS) OnDataTransfer(id string, request *core.DataTransferRequest) (*core.DataTransferConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -83,9 +74,6 @@ func (cs *CS) OnDataTransfer(id string, request *core.DataTransferRequest) (*cor
|
|||
}
|
||||
|
||||
func (cs *CS) OnHeartbeat(id string, request *core.HeartbeatRequest) (*core.HeartbeatConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -95,9 +83,6 @@ func (cs *CS) OnHeartbeat(id string, request *core.HeartbeatRequest) (*core.Hear
|
|||
}
|
||||
|
||||
func (cs *CS) OnMeterValues(id string, request *core.MeterValuesRequest) (*core.MeterValuesConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -107,9 +92,6 @@ func (cs *CS) OnMeterValues(id string, request *core.MeterValuesRequest) (*core.
|
|||
}
|
||||
|
||||
func (cs *CS) OnStatusNotification(id string, request *core.StatusNotificationRequest) (*core.StatusNotificationConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -119,9 +101,6 @@ func (cs *CS) OnStatusNotification(id string, request *core.StatusNotificationRe
|
|||
}
|
||||
|
||||
func (cs *CS) OnStartTransaction(id string, request *core.StartTransactionRequest) (*core.StartTransactionConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -131,9 +110,6 @@ func (cs *CS) OnStartTransaction(id string, request *core.StartTransactionReques
|
|||
}
|
||||
|
||||
func (cs *CS) OnStopTransaction(id string, request *core.StopTransactionRequest) (*core.StopTransactionConfirmation, error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -143,9 +119,6 @@ func (cs *CS) OnStopTransaction(id string, request *core.StopTransactionRequest)
|
|||
}
|
||||
|
||||
func (cs *CS) OnDiagnosticsStatusNotification(id string, request *firmware.DiagnosticsStatusNotificationRequest) (confirmation *firmware.DiagnosticsStatusNotificationConfirmation, err error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -155,9 +128,6 @@ func (cs *CS) OnDiagnosticsStatusNotification(id string, request *firmware.Diagn
|
|||
}
|
||||
|
||||
func (cs *CS) OnFirmwareStatusNotification(id string, request *firmware.FirmwareStatusNotificationRequest) (confirmation *firmware.FirmwareStatusNotificationConfirmation, err error) {
|
||||
cs.mu.Lock()
|
||||
defer cs.mu.Unlock()
|
||||
|
||||
cp, err := cs.ChargepointByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
|
|
@ -52,7 +52,12 @@ func Instance() *CS {
|
|||
go instance.errorHandler(cs.Errors())
|
||||
go cs.Start(8887, "/{ws}")
|
||||
|
||||
time.Sleep(time.Second)
|
||||
// wait for server to start
|
||||
for range time.Tick(10 * time.Millisecond) {
|
||||
if dispatcher.IsRunning() {
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return instance
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue