Git Product home page Git Product logo

mycelium's Introduction


Version Status Build Status Coverage Status

mycelium's People

Contributors

zgoethel avatar

Watchers

 avatar

mycelium's Issues

Elegant objects consideration

Consider the guidelines of Elegant Objects, where objects are not just pack mules for data. Every object is a self-contained machine.

  • Conversational interaction with the library
  • No "-er" names, such as RequestHandler and PluginManager
  • Replace static creation with constructors
  • Decorated, final, abstract classes and interfaces. That's it. (No extensions of full implementations, instead use a composable decorator)
  • No getters/setters
  • No null-references
  • No mutable objects
  • Rewrite those god awful unit tests

Later: replace Java Reflection in plugin-loading.

1.0.0-alpha implementation

CliffBackend 1 0 0-alpha

Plugin Feature Description Current Status
Core Plugin loading Load from class instance or from file Complete
Core Config files Initiate default configs, read and write to/from file Complete
Core StitchLink/Patch Create a way to transmit Request instances Complete
Core Inter-plugin talk Create a central service which delivers data to plugins Complete
Core Plugin dependencies Loads all plugins into common URLClassLoader and checks all dependencies are present Complete
Core Request handling/response Invoke a RequestCallback when a Request is received, and have a ResponderCallback which embeds a response and automatically communicates with the sender; additionally, sort by type with "request" header tag Complete
Core Routing Create a RequestRouter which sends a Request to the correct place by analyzing a "target" value in the header Complete
Core Route tracking Embed the route a Request took in the header so it can retrace back to the original sender through multiple levels of routing Complete
Network Session management Creates sessions with token and a separate SessionKernel for each created session Complete
Network SocketLink Create a StitchLink which works over a TCP connection Complete
Network Session routing Create a service which matches external clients with their SessionKernel and resorts to an uplink connection for outside services Complete
Network External clients Accept incoming TCP connections and connect to session routing Not started
Network Persistence ticks Automatically close connections when they are inactive for a certain amount of time, and reopen them when the session comes back alive Not started
Network Service redirect Reroute a request if that service is in another castle Started

1.0.1-alpha revision

CliffBackend 1 0 0-alpha

Plugin Feature Description Current Status
All Connection/session/resource pruning Delete expired sessions, close connections, analyze and avoid resource leaks Not started
All Optimization Stress test, find and fix bottlenecks Not started
Core Plugin compat tag and dependency min/max allowed Require a specific version of a dependency and have a compat tag in the plugin manifest; allow loading when [Requirement Min.] <= Installed Compat <= [Requirement Max.] Not started

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.