Skip to content

Request/Response communication with iceoryx #27

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
20 of 22 tasks
budrus opened this issue Dec 16, 2019 · 3 comments · Fixed by #275, #819, #858, #863 or #894
Closed
20 of 22 tasks

Request/Response communication with iceoryx #27

budrus opened this issue Dec 16, 2019 · 3 comments · Fixed by #275, #819, #858, #863 or #894
Assignees
Labels
enhancement New feature
Milestone

Comments

@budrus
Copy link
Contributor

budrus commented Dec 16, 2019

Brief feature description

Besides publish/subscribe also request/response communication shall be supported

Detailed information

So far iceoryx only supports publish/subscribe. For frameworks like ROS2 also a request/response communication shall be supported (services in ROS2). The building blocks in posh can be re-used here, so start with client and server ports and then do the layers above

We will have the same layered architecture as for publishers and subscribers. With ChunkSender and ChunkReceiver common building blocks are reused but a Client and a Server will use one of each for the bidirectional data transfer with requests and responses.
This image is a simplified view that shows the class hierarchy and the public method names for the typed C++ API.

component

  1. It will also have a zero-copy API, i.e. we can loan requests and take responses on the Client side and take requests and loan responses on the Server side.
  2. Like a Publisher, a Server can offer() or stopOffere()
  3. Similar to a Subscriber subscribe() and unsubscribe(), the Client can connect(), disconnect() and getConnectionState()
  4. You can poll the Server for requests and the Client for responses or use a Waitset to wait for requests and responses
  • 1. Design and interface implementation for ports

  • 2. Implementation and unit tests for ports

  • 3. Integration test for ports

    • including QueueFullPolicy tests with a real Client- and ServerPort
  • 4. C API

    • client
    • request/response header
    • server
    • examples
    • (optional) add iceoryx_posh_types.hpp RPC related config stuff to config.h.
    • (optional) add missing functionality to chunk header
  • 5. C++ API

    • typed C++ API
    • tests for typed C++ API
    • untyped C++ API
    • tests for untyped C++ API
    • send returns an expected instead of void
  • 6. Integration in runtime and RouDi

    • Make ServerPort's findable via ServiceDiscovery
  • 7. Common port queue policies

    • rename SubscriberTooSlowPolicy -> ConsumerTooSlowPolicy
      • alias for ConsumerTooSlowPolicy for easy migration to new API
      • rename WAIT_FOR_SUBSCRIBER -> WAIT_FOR_CONSUMER
      • add WAIT_FOR_SUBSCRIBER = WAIT_FOR_CONSUMER for migration purposes
    • rename QueueFullPolicy::BLOCK_PUBLISHER -> QueueFullPolicy::BLOCK_PRODUCER
      • add BLOCK_PUBLISHER = BLOCK_PRODUCER for migration purposes
    • decide if SubscriberTooSlowPolicy, WAIT_FOR_SUBSCRIBER and BLOCK_PUBLISHER should be deprecated
  • 8. Integration test with clients, server and waitsets (user API level)

  • 9. Example

@budrus budrus added the enhancement New feature label Dec 16, 2019
@budrus budrus mentioned this issue Apr 8, 2020
@budrus
Copy link
Contributor Author

budrus commented Sep 4, 2020

@Karsten1987 let's get the party started

budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 4, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 6, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 6, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 6, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 6, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 7, 2020
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 7, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 7, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 7, 2020
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 10, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 10, 2020
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 10, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 10, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 10, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 10, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 11, 2020
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 11, 2020
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 11, 2020
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 11, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 11, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 11, 2020
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 11, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit to budrus/iceoryx that referenced this issue Sep 14, 2020
Signed-off-by: Poehnl Michael (CC-AD/ESW1) <[email protected]>
budrus pushed a commit that referenced this issue Sep 14, 2020
…rfaces

Iox #27 1 client server port interfaces
@budrus budrus linked a pull request Sep 14, 2020 that will close this issue
@mossmaurice mossmaurice added this to the v1.x milestone Nov 4, 2020
dkroenke pushed a commit that referenced this issue Feb 28, 2022
dkroenke added a commit that referenced this issue Feb 28, 2022
elBoberido added a commit that referenced this issue Feb 28, 2022
…r-typed-client-and-server-api-tests

Iox #27 preparations for typed client and server api tests [stacked PR #4.6]
elBoberido added a commit that referenced this issue Feb 28, 2022
elBoberido pushed a commit that referenced this issue Feb 28, 2022
Signed-off-by: Dietrich Krönke <[email protected]>
elBoberido added a commit that referenced this issue Feb 28, 2022
elBoberido pushed a commit that referenced this issue Feb 28, 2022
Signed-off-by: Dietrich Krönke <[email protected]>
elBoberido pushed a commit that referenced this issue Feb 28, 2022
elBoberido added a commit that referenced this issue Feb 28, 2022
elBoberido pushed a commit that referenced this issue Feb 28, 2022
elBoberido added a commit that referenced this issue Feb 28, 2022
dkroenke added a commit that referenced this issue Feb 28, 2022
…server-examples

Iox #27 add client and server examples [stacked PR #6]
@tolga-talkme
Copy link

is it possible to use iceoryx in this way?
I mean as in request<->response way

@elBoberido
Copy link
Member

@tolga-talkme yes. There is a request/response example

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment