You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@plc4x.apache.org by Andrey Skorikov <pr...@gmail.com> on 2018/10/07 13:08:21 UTC
PlcProprietaryRequest/Response and PlcProtocolMessage are
disconnected from the rest of the API
Hello all,
currently there are three interfaces in the
org.apache.plc4x.java.api.messages package of the API module, which are
disconnected from the rest of the API:
- PlcProprietaryRequest
- PlcProprietaryResponse
- PlcProtocolMessage
How are these types supposed to be used? As far as I understand, clients
of the API cannot obtain instances of these types in any way.
Admittedly, there is an interface PlcProprietarySender that accepts
PlcProprietaryRequests, but it resides in the driver-base module and
therefore is inaccessible to the client. If we want to provide an
extension point for protocols, allowing clients to break the abstraction
layer and issue proprietary requests at their own risk, then there must
be some sort of interface which they can use to accomplish that. Either
the PlcProprietarySender interface must be made accessible to the
clients - which means it must moved to the API module, and integrated
with the rest of the API - or we should remove the proprietary types
from the API module, for they are useless at the moment anyway.
The same problem concerns the PlcProtocolMessage interface. None of the
other types in the API module refer to it. This type is used in the
driver-base module, but it seems to me that it is only an implementation
detail. Perhaps we can move the type out of the API module into the
driver-base module?
Andrey
Re: PlcProprietaryRequest/Response and PlcProtocolMessage are
disconnected from the rest of the API
Posted by Christofer Dutz <ch...@c-ware.de>.
Those were only used by Sebastian's ADS driver.
Perhaps let him explain them as I never quite managed to wrap my head around their necessity.
For me they were also sort of evil as they allow to explicitly send out proprietary stuff, which I liked to prevent.
Chris
Am 07.10.18, 15:35 schrieb "Andrey Skorikov" <pr...@gmail.com>:
Hello all,
currently there are three interfaces in the
org.apache.plc4x.java.api.messages package of the API module, which are
disconnected from the rest of the API:
- PlcProprietaryRequest
- PlcProprietaryResponse
- PlcProtocolMessage
How are these types supposed to be used? As far as I understand, clients
of the API cannot obtain instances of these types in any way.
Admittedly, there is an interface PlcProprietarySender that accepts
PlcProprietaryRequests, but it resides in the driver-base module and
therefore is inaccessible to the client. If we want to provide an
extension point for protocols, allowing clients to break the abstraction
layer and issue proprietary requests at their own risk, then there must
be some sort of interface which they can use to accomplish that. Either
the PlcProprietarySender interface must be made accessible to the
clients - which means it must moved to the API module, and integrated
with the rest of the API - or we should remove the proprietary types
from the API module, for they are useless at the moment anyway.
The same problem concerns the PlcProtocolMessage interface. None of the
other types in the API module refer to it. This type is used in the
driver-base module, but it seems to me that it is only an implementation
detail. Perhaps we can move the type out of the API module into the
driver-base module?
Andrey