Git Product home page Git Product logo

spine-go's People

Contributors

damek86 avatar derandereandi avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

spine-go's Issues

Handle TimePeriodType Endtime being a relative value

  • If a duration is provided for a TimePeriodType EndTime value, and no StartTime is provided in a write message, the endTime should be converted to an absolute timestamp
  • A helper method should provide the current duration being left
  • On serialization the current remaining duration should be used
  • On every subsequent write, the same process should be repeated.

Add option to allow or deny writes to local server

An application should be able to allow or deny write operations to a local server feature.

One example is that LoadControlLimits are set which are outside of the allowed and assigned ElectricalConnectionPermittedValueSetData. As these are loose dependencies defined in use cases, it is nothing the stack shall or can do automatically.

Improve publish / subscribe mechanism for data and events

Current situation:

  • Right now one can only subscribe to everything
  • Every subscriber will be informed about an event on an independent thread

Ideas to improve this:

  • Option to un-/subscribe to specific/set of EventType
  • Option to provide a channel for receiving events
  • Option to provide a callback functions to be invoked for events

More ideas?

Add option to partially update data on local server feature

Right now a local server feature only allows setting the complete data set. This will then always trigger a full notify to all remote client features, even though data they are interested in might not have been changed.

To improve this, an UpdateData feature should be introduced, that supports deletion of (partial) data and updating new data. This should then trigger a partial notify for this data only and be merged locally.

This should be possible to be implemented with the same/similar way a remote partial update is processed.

I think if it is fine, to expose an update the requires the API user to actively think about deletions, partial updates in the way SPINE does it. Then the stack wouldn't have to do any magic but the API user has to really know what they are doing.

Handle incoming write message errors if data is not set to be changeable

Instead of manually checking every incoming write messages, they are handled fully automatically. To make sure data is rejected from being written from a remote client, the appropriate field items indicating if data is allowed to be written, need to be set.

E.g for LoadContrlLimitListDataType the field IsLimitChangeable needs to be set to false

MPL license

Noticed during evcc-io/evcc#13998 that this package now relies on github.com/hashicorp/golang-lru/v2 which is under MPL license. In general, projects like spf13/viper are trying to move away from depending on hashicorp due to their licensing changes. I'm no expert but wondering if MPL is compatible with MIT?

Add support for multiple bindings per server feature

Multiple bindings are allowed per spec (in fact they are not prohibited).

The flow then should be:

  • The first client that writes on a specialization (combination of descriptions resulting in an ID) will have the sole write access to that ID, others will be denied, until the binding is removed
  • This requires to store a current active write access list per ...ListDataType key combinations

The current behaviour is that only one binding is allowed.

Handle non supported partial notifies

If the remote device sends a notify with a partial dataset for a data structure that does not support partials yet, automatically send a read to receive to complete update date dataset.

Update List criteria for some list types unclear

For the following list types namespaces, the update criteria is currently unclear:

  • DirectControlActivityListDataType
  • NetworkManagement...
  • NodeManagementDestinationListDataType
  • SensingDataType
  • UseCaseInformationListDataType
  • SpecificationVersionListDataType

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.