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