[][src]Crate romp

Romp

romp is a messaging server that uses the STOMP protocol, and STOMP over WebSockets.

romp can run as a standalone server, hosting queues and/or topics to which clients can subscribe or send messages. It can also host bespoke filters (handlers) to programmatically respond to incoming messages. This enables romp servers to act as app servers, using asynchronous messaging model.

Custom filters can be added as follow...


    // Filter structs have an init() method
    romp_stomp_filter(Box::new(PingFilter {}));

    // Http Filter structs different error handling
    romp_http_filter(Box::new(HelloFilter {}));

    // STOMP filters can be written as closures
    romp_stomp(|ctx, msg| {
        if let Some(hdr) = msg.get_header("special-header") {
            let mut session = ctx.session.write().unwrap();
            session.send_message(get_response_ok("howdy".to_string()));
            return Ok(true);
        }
        Ok(false)
    });

    // as can HTTP filters
    romp_http(|ctx, msg| {
        if "/pingerooni".eq(ctx.attributes.get("romp.uri").unwrap()) {
            let mut session = ctx.session.write().unwrap();
            session.send_message(Arc::new(get_http_ok_msg()));
            return Ok(true);
        }
        Ok(false)
    });
    ///

Then bootstrap the server

tokio::run(bootstrap_romp());

Modules

body_parser

Code related to parsing STOMP message bodies, either fixed content-length or \0 terminated.

bootstrap

Bootstrapping, i.e. initializing, a romp server.

config

Configuration code, for parsing server config romp.toml, logging config, and romp.passwd usernames.

errors

Common error definitions returned by the romp server.

init

Contains global objects started during bootstrap, this is principally the CONFIG which provides access to data in romp.toml, SERVER which contains the destinations (queues and topics) and USER which contains configured users and functions to authenticate users.

message

STOMP message representation and utils for generating responses and serialing STOMP messages.

parser

STOMP protocol push parser, parses command and headers, not the body.

persist

Persistence of received STOMP messages.

prelude

A "prelude" for users of the romp crate.

session

Code related to maintenance of the underlying TCP connection.

system

Linux specifics.

util

Utility methods.

web_socket

HTTP WebSockets protocol parsers and related functions.

workflow

Workflow concerns application logic, either in built STOMP message handling, admin functions or bespoke application specific functions.