Skip to content

Example for Namespaces, Classes and Interfaces

Ingo Randolf edited this page Apr 12, 2023 · 1 revision

Sketches and ideas how an implementation could look like.

Namespaces

// optional prefix: org.rabbitcontrol

rcp
  RCPServer
  RCPClient
rcp.transporter
  ServerTransporter (interface)
  ClientTransporter (interface)
  WebsocketServerTransporter
  WebsocketClientTransporter
  ...
rcp.parameter
  Parameter (interface)
  BooleanParameter
  ...
rcp.exceptions
  RCPDataErrorException
  RCPUnsupportedFeatureException
  ...
rcp.protocol
  RcpTypes (generated from kaitai)
  Packet

Classes

RCPServer

RCPServer(ServerTransporter transporter);
void dispose();

boolean addTransporter(ServerTransporter transporter);
boolean removeTransporter(ServerTransporter transporter);
int getConnectionCount();

boolean addParameter(Parameter param);
boolean removeParameter(Parameter param);
boolean update();

Events:
onError(Exception ex);

e.g.: # RCPWebSocketServer

void dispose();

void bind(String host, int port);
void unbind();

int getConnectionCount();

boolean addParameter(Parameter param);
boolean removeParameter(Parameter param);
boolean update();

Events:
onError(Exception ex);

RCPClient:

RCPClient(ClientTransporter transporter);
void dispose();

void connect(String host, int port);
void disconnect();

void initialize(); // tries to send an init-command
void update(); // update all changes

Events:
parameterAdded(Parameter param);
parameterRemoved(Parameter param);
onError(Exception ex);
statusChanged(Status status, String message);
enum Status {
  DISCONNECTED,
  CONNECTED, // network connected
  VERSION_MISSMATCH,
  OK // connected and version ok
}

Interfaces

ServerTransporter

bind(int port);
unbind();

void sendToOne(byte[] _data, Object _id);
void sendToAll(byte[] _data, Object _excludeId);

int getConnectionCount();

Events:
received(byte[] _data, Object _id);

ClientTransporter

void connect(String host, int port);
void disconnect();
boolean isConnected();

void send(byte[] _data);

Events:
connected();
disconnected();
received(byte[] _data);

Parameter

// setter / getter for all options:
/*
id
typedefinition
label
description
tags
order
parentid
userdata
userid
*/

Events:
Updated(Parameter param);
ValueUpdated(Parameter param);
Clone this wiki locally