Giter Club home page Giter Club logo

elock's Introduction

A Simple Distributed Lock Server

This is still an early project, but the goal is pretty simple:

A simple, distributed, fault-tolerant lock server.

Commands:

lock

Lock has two forms. The first is a non-blocking form that either tells you the lock is already taken, or acquires it.

lock lock_name

The second form allows you to wait for a certain number of seconds for the lock to become available:

lock lock_name timeout_in_seconds

Possible return values:

  • 200 - Lock has been acquired
  • 409 - The resource is locked -- you lose

Any acquired lock will be held until it's specifically unlocked, unlocked with unlock_all, or the client disconnects.

unlock

Unlock releases the lock with the given key if the current client has acquired that lock:

unlock lock_name

Possible return values:

  • 200 - The lock has been released
  • 403 - You do not own this lock (therefore you didn't release it)

unlock_all

Release any locks this client may be holding.

Possible return values:

  • 200 - It just blows it all away

conn_id

Retrieve your current session ID. This may be resumed later.

Returns:

  • 200 [some_string]

conn_id [string]

Attempts to set your connection ID to the given value.

This allows you to resume a session if you get disconnected.

Returns:

  • 200 - Resumed
  • 403 - Could not resume connection (you either already have a new one, or that one belongs to someone else)

set_timeout [integer]

Set the amount of time after disconnect (in milliseconds) before your locks are all automatically freed. Default is 30,000 (30 seconds).

Returns:

  • 200 - the new value was set

quit

Disconnect your connection.

stats

Get some server stats.

Returns:

  • 200 STATS - beginning of a stat stream (see below)

The stats output is multi-line, so the protocol handling is a little different from all of the other commands.

The initial response is

200 STATS

which is followed by several values in the following form:

STAT [key] [value]

and then one terminating value:

END

A complete example is as follows:

200 STATS
STAT clients 0
STAT locks 0
STAT monitoring 0
END

elock's People

Contributors

caringmachine avatar dustin avatar

Watchers

 avatar  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.