Giter Club home page Giter Club logo

atacama's Introduction

Atacama

A modern, pure OCaml socket pool for Riot inspired by Thousand Island. It aims to be easy to understand and reason about, while also being at least as stable and performant as the alternatives.

Getting Started

opam install atacama

Usage

To start a Atacama server, you just specify a port to bind to, and a module that will handle the connections.

let (Ok pid) = Atacama.start_link ~port:2112 (module Echo) initial_state in

In this case, our Echo handler looks like this:

module Echo = struct
  open Atacama.Handler
  include Atacama.Handler.Default

  type state = int

  let handle_data data socket state =
    Logger.info (fun f -> f "[%d] echo: %s" state (Bigstringaf.to_string data));
    let (Ok _bytes) = Atacama.Socket.send socket data in
    Continue (state+1)
end

Custom lifecycle functions can be specified, but sensible defaults are available in the Atacama.Handler.Default module that you can include to get started quickly.

Custom Transports

When starting an Atacama server, we can also specify a transport module.

Transport is a module that implements Atacama.Transport.Intf, which defines how to listen, connect, and accept sockets, how to handshake new connections, and how to send and receive data.

Clear TCP sockets are provided and used by default when starting an Atacama server.

atacama's People

Contributors

leostera avatar smorimoto avatar

Watchers

 avatar

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.