Giter Club home page Giter Club logo

jemma's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jemma's Issues

Review of documentation of all bundles and key APIs

in order to evolve the platform further, we might need a clean-up and refactoring of all bundles. A first step for this would be to better document available bundles (high-level documentation on the wiki) + good javadocs for the main classes/interfaces/services/components

Fix Eclipse warnings

JEMMA release 0.0.1 has more than 2049 Warnings. We should solve them in order to have a more "manageable" set of checks.

JEMMA-Core as a separate distribution

The core of Jemma is composed of a very limited set of bundles (5-6 in total) which provide the only functionality of discovery and communication with Energy@home devices including parsing/unparsing ZigBee clusters. All the other bundles deal with the application layers and the communication with the server.
I propose that developers shall have a simple way to download and use the JEMMA-core where the application bundles shall be considered an optional add-on

Review the current ProfileID control

The current version of JEMMA does some internal check when an incoming message is received: it is not clear yet, but somewhere there is a check to verify that the ProfileId match the declared one by the node itself (or the supported one from the GAL).
However this check should be avoided, giving the responsability to the application to receive and handle this message (at the moment the message could be dropped and the application is not even aware that a message has arrived).

Unnecessary compression of json messages

At the moment, the library used to manage json RPCs between the osgi application and the web ui, Jabsorb, tries to compress every json response that needs to be sent to the web ui.

Jabsorb has a GZip threshold that represents the minimum number of bytes gained from compression that makes acceptable to send a compressed json to the client. When the result of the compression falls below that threshold, the compressed message is discarded by the library and the original uncompressed message is sent instead.
Jemma's compressed json messages are usually so small that the compressed message is actually bigger than the original one or that the compression gain is often smaller than the threshold, so ATM compressing them seems useless.

What i've described above can be noticed looking at Jemma logs:

WARN org.jabsorb.JSONRPCServlet - gzipping resulted in a larger output size! aborting (sending non-gzipped response)... 
you may want to increase the gzip threshold if this happens a lot! original size = 1598 gzipped size = 1621

Is this issue actually relevant? It depends on where the Jemma is deployed.
While i don't have actual numbers, i suspect that when deployed on gateways with a slow CPU, the cpu time lost trying endlessly to compress json messages is not negligible (and could be used to perform other tasks).

I'm going to send in open a pull request for this (since i've already made this modification and tested it), that completely disables gzip compression. Feel free to keep it on hold until actual stats on performance will be measured.

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.