Giter Site home page Giter Site logo

Comments (6)

dirk-thomas avatar dirk-thomas commented on June 28, 2024

Yes, it looks like a copy-n-paste error. Can you please create a PR with the proposed change.

But it seems that the current implementations never return this code anyway? @wjwwood

from rcl.

wjwwood avatar wjwwood commented on June 28, 2024

Definitely a copy-paste bug. That return code is reserved for checking if the service is valid or not. In the publisher code, an equivalent return code is returned if the argument is null, but perhaps that's not the best idea, and should instead return RCL_RET_INVALID_ARGUMENT as the implementation of this function does. When I think of an "invalid service" I mean:

  • rcl_shutdown has been called
  • the associated node is invalid

Currently the node can only be invalid if rcl_shutdown has been called, which is a bit redundant. However, I wanted to build in the notion that a node could have a valid/invalid state separate from the init/shutdown state.

A more general issue is that we need to check these states in all functions, and provide rcl_X_is_valid() functions for each type of thing.

from rcl.

firesurfer avatar firesurfer commented on June 28, 2024

@dirk-thomas Then I'm going to create a PR that corrects the documentation from RCL_RET_CLIENT_INVALID
to RCL_RET_SERVICE_INVALID ?

@wjwwood
I would expect this error in case the passed service is invalid (is this even possible to determine?). In case the node is invalid or rcl_shutdown has been called I would return the corresponding value. E.g in case the node is invalid I would expect the function to return RCL_RET_NODE_INVALID

By a rcl_X_is_valid() function you mean for example a function that checks if a given node is valid: bool rcl_node_is_valid(rcl_node_t * node) ?

from rcl.

wjwwood avatar wjwwood commented on June 28, 2024

I would expect this error in case the passed service is invalid (is this even possible to determine?). In case the node is invalid or rcl_shutdown has been called I would return the corresponding value. E.g in case the node is invalid I would expect the function to return RCL_RET_NODE_INVALID

You're right that the node being invalid might be the first concern, but since this this function doesn't take a node as an argument (it is probably held internally by the service) then I think the RCL_RET_SERVICE_INVALID is the right return code here. Currently, there is no additional state for the service object that needs to be checked for it to be valid, other than the node, but that might change in the future. This return code is a placeholder more than anything. You could imagine in the future a function like rcl_service_shutdown() which "invalidates" a given service without destroying the object like rcl_service_fini() does.

By a rcl_X_is_valid() function you mean for example a function that checks if a given node is valid: bool rcl_node_is_valid(rcl_node_t * node)?

That's correct, and by extension bool rcl_service_is_valid(rcl_service_t * service).

from rcl.

firesurfer avatar firesurfer commented on June 28, 2024

I created a PR #80 that simply removes the documentation entry. I didn't add the RCL_RET_SERVICE_INVALID return type because I think there's currently no possible check in the function where this return value might be reasonable.

But I would recommend to keep this issue open because of the things wjwwood said in his last post.

from rcl.

wjwwood avatar wjwwood commented on June 28, 2024

@firesurfer actually can you open a new issue for whatever you think needs to be tracked. From my perspective, this can be closed once #80 replaces CLIENT with SERVICE in the documentation, but if you see other issues we can track/discuss those too.

from rcl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.