Giter Club home page Giter Club logo

orb's Introduction

Unit

We introduce Unit, the primary asynchronous computation entity. A unit is a collection of channels. It applies the fun. It has configurable input or output queues. It is possible to have a queueless unit. A unit applies a function over input data elements. The results are queued to the outputs.

Unit Architecture

Several units are connected to form a Network. The connections are established through next() operation. next() sends a message to input queues. Typically, a network has a START unit and a FINAL unit. The START unit receives the network inputs. The Final unit emits the network output. Network flow is depicted graphically in:

Network Flow

Network Flow

Network Flow

Unit Structure

Unit {
  name
  channels = {
    channel1: {provider: {unit: 'name', channel: 'name'}},
    channel2: {}
    channel3: {provider: {unit: unitRef, channel: 'name'}}  
  }

  functions: [
    {
      channels: ['channel1', 'channel2'],
      func: ([c1, c2]) => {
        return {channel3: c1 + c2}
      }
    }
  ]
  
  start()
  next({channel: data})
  stop()
}

Network Structure

Network {
  name
  channels = {
    channel1: {provider: {unit: 'name', channel: 'name'}},
    channel2: {}
    channel3: {provider: {unit: unitRef, channel: 'name'}}  
  }

  functions: [
    {
      channels: ['channel1', 'channel2'],
      func: ([c1, c2]) => {
        return {channel3: c1 + c2}
      }
    }
  ],
  units: {
    unit1: {
      channels: {
        u1channel: {provider: {unit: 'network', channel: 'channel1'}},
        u2channel: {provider: {unit: 'network', channel: 'channel2'}},
      },
      functions: [
        {
          channels: ['u1channel'],
          func: v => {
            return {u2channel: v * 2}
          }
        }
      ]
    }
  }
   
  start()
  next({channel: data})
  stop()
}

Routes

The network and units together is a collection of nodes connected through predefined routes. Functions represent nodes and the channel associations are the predefined routes. A network of cities connected through highways is a close approximation. A trip from one city to another starts with route resolution. Map applications serve exactly that purpose. For our network, we introduce the concept of routes. A route is a description of nodes (unit-channel) that a request will follow. A route element has an associated request. A node processes its associated request.

Route structure

Route {
  stack
  chain
  
  next()
  append(...elements)
  copy()
  merge(route)
}

orb's People

Contributors

nareshps avatar

Watchers

 avatar James Cloos avatar

orb's Issues

Shortcuts

Re-route request in exceptional cases.

Trip Types

A client might have different requirements to access trip data. Some might want all segment outputs merged together. Others might just want the final result. Some may even want it merged from specific segments.

Named Routes

Trip creation using predefined routes. The consumers will also have the ability to make changes to the route.

Scatter/Gather

An operation, frequently, requires preconditions to be fulfilled prior to execution. When those preconditions are asynchronous in nature, an agent needs to be commissioned. An agent can dispatch the precondition requests and gather their results. After all the preconditions are satisfied, it executes the original operation.

This scenario can be handled with a scatter/gather programming paradigm.

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.