Giter VIP home page Giter VIP logo

ecoap's People

Contributors

xdeon avatar

Watchers

 avatar  avatar

ecoap's Issues

Refactor ecoap_client

The present implementation deals with requests and responses asynchronously with complex overhead on tracking a variety of things. It would improve both readability and maintainability by refactoring ecoap_client with a simpler structure.

NAT issues

What is the consequence of NAT? Consider client behind NAT and server behind NAT, both with ongoing observe. And consider what will happen with current implementation that endpoint with alive client process will not terminate.

Refactor DTLS

Currently we use simple listener supervisor + acceptor/connection state machine to handle DTLS. This structure does not differ process busy accepting and process already connected. Also it is hard to track e.g. number of connections, as accepting is a blocking operation.

Furthermore, reconnecting logic is absent because we are unclear about how the client would react in such a scenario (consider what to do when the device went into sleep mode).

General refactoring

ecoap should definitely be refactored thoroughly as it inherits too many weird code from modifications around the original code base.

It might be a good idea to build proper-based tests either using ecoap itself as a model or using the RFC as a model. That should,

  1. ensure the refactored system work as before
  2. figure out some hidden bugs that violate the RFC

However how to achieve reasonable properties is not easy. The whole task might take longer time than expected.

Message lifetime conflicts with retransmit interval

When message lifetime is set to value less than retransmit interval, it is possible that we never get a reply if using synchronous APIs with infinity timeout + the remote endpoint is unresponsive. This is because message exchange is cleaned up too early and the transmit timeout message leads to nowhere. However in this case we still have stale token info left in the endpoint process ...

Server failover

How to handle server failover? Do we need persistent store for observe relationships? This also affects load balancing strategy since they both involve switching between different server endpoints.

Refactor ecoap_handler

Make ecoap_handler general handler for both server and client, let embedded client directly apply its logic within the handler process, let standalone client go with current way.

Related to #2

Make transparent block-wise transfer optional

Currently block-wise transfer is handled by ecoap_handler automatically, which means it stores segments of the payload in the process state until it is complete or expired, and will only invoke user-defined handler function when the transfer finished.

This method is easy for users, but requires potential large memory to operate. Does it make sense to have it optional? That is to say, user can choose whether to deal with the blocks themselves or not.

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.