bob-base

0.0.3 • Public • Published

BOB Base

C++ base class & status codes enum for the BOB streaming protocol.

In your binding.gyp:

  "include_dirs": [
    "<!(node -e \"require('bob-base')\")"
  ]

In your C++:

#include <bob.h>

Usage

Base class

All C++ BOB interfaces must inherit from BOB::Base and implement its virtual functions:

class My_Sink : public BOB::Base {
 public:
  My_Sink(<options>);
  virtual ~My_Sink();
 
  virtual BOB::Base* BindSource(BOB::Base* source);
  virtual void BindSink(BOB::Base* sink);
  virtual void Next(int status, void** error, char* data, size_t bytes);
  virtual void Pull(void** error, char* data, size_t size);
 
 private:
  BOB::Base* source_;
};

Sinks should implement BindSource roughly as so:

BOB::Base* My_Sink::BindSource(BOB::Base* source) {
  source->BindSink(static_cast<BOB::Base*>(this));
  source_ = source;
 
  return this;
}

Sources should implement BindSink roughly as so:

void FS_Source::BindSink(BOB::Base* sink) {
  sink_ = sink;
}

Functions specific to sources or sinks may exit the program if invoked:

void My_Sink::Pull(void** error, char* data, size_t size) {
  printf("Sinks do not have a public ::Pull!");
  abort();
}

Status enum

  • Send Status::CONTINUE as the first argument to a BOB sink's next() method in most cases.
  • Send Status::END as the first argument to a BOB sink's next() to end the stream.
  • Send Status::ERROR as the first argument to a BOB sink's next() if there is an error.

License

MIT LicensedContributions via DCO 1.1

Readme

Keywords

Package Sidebar

Install

npm i bob-base

Weekly Downloads

1

Version

0.0.3

License

MIT

Unpacked Size

5.12 kB

Total Files

7

Last publish

Collaborators

  • fishrock123