Skip to content

Commit

Permalink
feat(plc4go): implement unsubscription requests
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl committed Jul 31, 2023
1 parent c9efef3 commit dcc5edb
Show file tree
Hide file tree
Showing 7 changed files with 174 additions and 20 deletions.
10 changes: 6 additions & 4 deletions plc4go/pkg/api/model/plc_unsubscription.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,23 @@ package model

import "context"

type PlcUnsubscriptionRequestBuilder interface {
// TODO: Implement
}

type PlcUnsubscriptionRequestResult interface {
GetRequest() PlcUnsubscriptionRequest
GetResponse() PlcUnsubscriptionResponse
GetErr() error
}

type PlcUnsubscriptionRequestBuilder interface {
AddHandles(PlcSubscriptionHandle ...PlcSubscriptionHandle)
Build() (PlcUnsubscriptionRequest, error)
}

type PlcUnsubscriptionRequest interface {
Execute() <-chan PlcUnsubscriptionRequestResult
ExecuteWithContext(ctx context.Context) <-chan PlcUnsubscriptionRequestResult
PlcRequest
}

type PlcUnsubscriptionResponse interface {
GetRequest() PlcUnsubscriptionRequest
}
36 changes: 28 additions & 8 deletions plc4go/spi/model/DefaultPlcUnsubscriptionRequest.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,30 +21,50 @@ package model

import (
"context"
"github.com/apache/plc4x/plc4go/spi"

apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
)

var _ apiModel.PlcUnsubscriptionRequestBuilder = &DefaultPlcUnsubscriptionRequestBuilder{}

//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcUnsubscriptionRequestBuilder
type DefaultPlcUnsubscriptionRequestBuilder struct {
subscriptionHandles []apiModel.PlcSubscriptionHandle
}

func (d *DefaultPlcUnsubscriptionRequestBuilder) AddHandles(subscriptionHandles ...apiModel.PlcSubscriptionHandle) {
subscriptionHandles = append(subscriptionHandles, subscriptionHandles...)
}

func (d *DefaultPlcUnsubscriptionRequestBuilder) Build() (apiModel.PlcUnsubscriptionRequest, error) {
return NewDefaultPlcUnsubscriptionRequest(d.subscriptionHandles), nil
}

var _ apiModel.PlcUnsubscriptionRequest = &DefaultPlcUnsubscriptionRequest{}

//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcUnsubscriptionRequest
type DefaultPlcUnsubscriptionRequest struct {
// TODO: implement
implementMe string
subscriber spi.PlcSubscriber
subscriptionHandles []apiModel.PlcSubscriptionHandle
}

func NewDefaultPlcUnsubscriptionRequest() *DefaultPlcUnsubscriptionRequest {
return &DefaultPlcUnsubscriptionRequest{}
func NewDefaultPlcUnsubscriptionRequest(subscriptionHandles []apiModel.PlcSubscriptionHandle) *DefaultPlcUnsubscriptionRequest {
return &DefaultPlcUnsubscriptionRequest{
subscriptionHandles: subscriptionHandles,
}
}

func (d *DefaultPlcUnsubscriptionRequest) Execute() <-chan apiModel.PlcUnsubscriptionRequestResult {
//TODO implement me
panic("implement me")
return d.ExecuteWithContext(context.Background())
}

func (d *DefaultPlcUnsubscriptionRequest) ExecuteWithContext(ctx context.Context) <-chan apiModel.PlcUnsubscriptionRequestResult {
//TODO implement me
panic("implement me")
return d.subscriber.Unsubscribe(ctx, d)
}

func (d *DefaultPlcUnsubscriptionRequest) GetSubscriptionHandles() []apiModel.PlcSubscriptionHandle {
return d.subscriptionHandles
}

func (d *DefaultPlcUnsubscriptionRequest) IsAPlcMessage() bool {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

45 changes: 44 additions & 1 deletion plc4go/spi/model/DefaultPlcUnsubscriptionRequest_plc4xgen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 8 additions & 4 deletions plc4go/spi/model/DefaultPlcUnsubscriptionResponse.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,14 @@ var _ apiModel.PlcUnsubscriptionResponse = &DefaultPlcUnsubscriptionResponse{}

//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcUnsubscriptionResponse
type DefaultPlcUnsubscriptionResponse struct {
// TODO: implement
implementMe string
request apiModel.PlcUnsubscriptionRequest `ignore:"true"`
none string
}

func NewDefaultPlcUnsubscriptionResponse() *DefaultPlcUnsubscriptionResponse {
return &DefaultPlcUnsubscriptionResponse{}
func (d *DefaultPlcUnsubscriptionResponse) GetRequest() apiModel.PlcUnsubscriptionRequest {
return d.request
}

func NewDefaultPlcUnsubscriptionResponse(request apiModel.PlcUnsubscriptionRequest) *DefaultPlcUnsubscriptionResponse {
return &DefaultPlcUnsubscriptionResponse{request: request}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions plc4go/spi/model/render_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -313,8 +313,8 @@ func TestRenderTestCustom(t *testing.T) {
},
{
sut: NewDefaultPlcUnsubscriptionRequestResult(
NewDefaultPlcUnsubscriptionRequest(),
NewDefaultPlcUnsubscriptionResponse(),
NewDefaultPlcUnsubscriptionRequest(nil),
NewDefaultPlcUnsubscriptionResponse(nil),
nil,
).(interface { // TODO: workaround
fmt.Stringer
Expand Down

0 comments on commit dcc5edb

Please sign in to comment.