The cl-replica Reference Manual

Next: , Previous: , Up: (dir)   [Contents][Index]

The cl-replica Reference Manual

This is the cl-replica Reference Manual, version 1.0.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Tue Nov 15 05:05:02 2022 GMT+0.

Table of Contents


1 Introduction

cl-replica is a library for hash-tables replication via an epidemic algorithm.

Introduction

Hash-tables are widely used and their replication might be particular interesting for distributed applications. However, keeping replicas consistent is not an easy task because one has to find a way to distribute local updates fast and reliably. These two requirements are contradictory, and a reasonable compromise can be found only for a particular use case. Our use case is a large heterogeneous unreliable network, which connects thousands of nodes. Each node is unstable and it keeps only a partial view of the network. It is clear, that a broadcast is not a good solution for two reasons. First, remote peers can temporarily vanish from the network and miss an update. Secondly, it would introduce O(n) bottleneck at the node which shares its update. An elegant approach is to make use of epidemic algorithms. They are simple, stable and scale well [1-2].

How it works

cl-replica uses the following epidemic protocol:

  1. Every node keeps a partial view of its network environment
  2. Every local update is shared with other nodes via "push-update"
  3. Every node listens on udp/tcp ports and applies receiving updates locally
  4. Every node provides periodically its neigbours with a cache with the keys last modified
  5. Partial ordering is determined by vector clocks

Some implementation notes are summarized here.

All that is wrapped in an API which is very close to the standard API for hash-tables:

Additionally, the function destroy-shared-htable (h-table-obj wait-after-socket-is-closed) is provided which stops all network and data threads inside a h-table-obj and returns a normal hash-table.

How to build

Use Quicklisp or configure ASDF to find cl-replica and execute:

(require "asdf")
(asdf:load-system "cl-replica")
(asdf:load-system "cl-replica/test") ;; to build unit-tests

How to test

Put your unit-tests in unit-tests and then execute in REPL:

CL-USER> (in-package :u-tests)
U-TESTS> (run-unit-tests)

How to use

(defpackage :your-package
  (:use :cl :cl-replica))

(in-package :your-package)

(defun test (addr-1 addr-2)
  "Create two replicated hash tables"
  (let ((h1 (make-hash-table))
	(h2 (make-hash-table)))
    (let ((h-table-obj-1 (share-hash-table h1 :this-node addr-1
					      :other-nodes (list addr-2)))
	  (h-table-obj-2 (share-hash-table h2 :this-node addr-2
					      :other-nodes (list addr-1))))
      (newhash-shared 0 h-table-obj-1 "0") ;; add value locally
      (sleep 1)
      (unwind-protect
	   (progn
	     ;; check local value
	     (assert (string= "0" (gethash-shared 0 h-table-obj-1)))
	     ;; check replicated value on a remote peer
	     (assert (string= "0" (gethash-shared 0 h-table-obj-2))))
	(destroy-shared-htable h-table-obj-1 0)
	(destroy-shared-htable h-table-obj-2 0)))))

(test "tcp://127.0.0.1:5000" "tcp://127.0.0.1:5001")
(test "udp://127.0.0.1:5000" "udp://127.0.0.1:5001")

See the API description and unit-tests for numerous usage examples.

Limitations:

cl-replica permits only commutative operations on hash-tables, i.e. serializabilty is not guaranteed. For the operations, which introduce dependencies among values, transactions are an obvious choice. Additionally, a lazy nature of data dissemination makes cl-replica inappropriate for an application with real-time requirements.

Tested

Contribution:

Any kind of contributions are highly appreciated. Two obvious ways to improve the library are (1) to make it portable across different Lisp compilers and (2) to test it in a real distributed environment. Please, take into account the following guidilines:

  1. Write unit tests for your code and put it in unit-tests
  2. When applicable, do not use third-party libraries and make extensive use of compiler features.
  3. Compile your sources with (declaim (optimize (debug 3))) flag.

References

[1] Demers et al., Epidemic Algorithms for Replicated Database Maintenance, 1989 [2] Holliday et al., Epidemic Algorithms for Replicated Databases, 2003


2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 cl-replica

Library for hash-table replication via epidemic algorithms

Author

Dr.-Ing. Igor Sokolov

License

BSD

Version

1.0.0

Source

cl-replica.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp   [Contents][Index]

3.1.1 cl-replica/cl-replica.asd

Source

cl-replica.asd.

Parent Component

cl-replica (system).

ASDF Systems

cl-replica.


3.1.2 cl-replica/packages.lisp

Source

cl-replica.asd.

Parent Component

cl-replica (system).

Packages

3.1.3 cl-replica/vector-clock.lisp

Dependency

packages.lisp (file).

Source

cl-replica.asd.

Parent Component

cl-replica (system).

Public Interface
Internals

3.1.4 cl-replica/network-io.lisp

Dependency

packages.lisp (file).

Source

cl-replica.asd.

Parent Component

cl-replica (system).

Public Interface
Internals

3.1.5 cl-replica/hashtable-ops.lisp

Dependencies
Source

cl-replica.asd.

Parent Component

cl-replica (system).

Public Interface
Internals

3.1.6 cl-replica/api.lisp

Dependencies
Source

cl-replica.asd.

Parent Component

cl-replica (system).

Public Interface
Internals

4 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

4.1 cl-replica

Source

packages.lisp.

Use List
Public Interface
Internals

4.2 cl-replica.network-io

Source

packages.lisp.

Use List

common-lisp.

Used By List
Public Interface
Internals

4.3 cl-replica.vector-clock

Source

packages.lisp.

Use List

common-lisp.

Used By List
Public Interface
Internals

4.4 cl-replica.hashtable-ops

Source

packages.lisp.

Use List
Used By List

cl-replica.

Public Interface
Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Public Interface


5.1.1 Macros

Macro: gvalue-dbind (vars gvalue &body body)

Destructures gvalue and binds its component to vars

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.


5.1.2 Setf expanders

Setf Expander: (setf gethash-shared) (key h-table-obj)
Package

cl-replica.

Source

api.lisp.

Reader

gethash-shared (function).

Writer

newhash-shared (function).


5.1.3 Ordinary functions

Function: apply-updates-from-other-nodes (sht settings queue)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: clrhash-shared (h-table-obj)

API for deleting all keys from h-table.

Package

cl-replica.

Source

api.lisp.

Function: compare-and-update (ts-own ts-received)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Function: connect-to-remote-peer (addr settings)

Returns node on which one can all send-update

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: destroy-shared-htable (h-table-obj wait-after-socket-is-closed)

API to stop all threads inside the shared hash table. A simple hash-table is returned.

Package

cl-replica.

Source

api.lisp.

Function: gethash-shared (key h-table-obj &optional default)

API for getting value

Package

cl-replica.

Source

api.lisp.

Setf expander for this function

(setf gethash-shared).

Function: gethash-shared-no-lock (key sht)

Retrieves value from h-table based on key

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: init-gvalue (value del-p timestamp)

Constructs a hash-table shared value from normal value

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: init-timestamp (n-proc)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Function: make-network-settings (&key htable-entry-size header-bytes trailing-bytes server-buffer-size client-buffer-size udp-socket stop-sync time-to-wait-if-no-data stop-udp-server stop-tcp-server stop-tcp-client max-n-of-tcp-connections tcp-client-try-reconnect-after tcp-client-reconnection-attempts share-cache-interval-in-sec remove-obsolete-keys-interval stop-hash-table-cleaning cache-being-processed encryption-fns)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: make-shared-hash-table (&key lock this-node other-nodes number-of-nodes this-node-idx clients-socket-pool server-socket server-input-queue table last-keys-modified last-keys-modified-max-length destroyed-p)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: make-timestamp (&key vclock)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Function: maphash-shared (fn h-table-obj)

API for iteration over key-value pairs

Package

cl-replica.

Source

api.lisp.

Reader: network-settings-cache-being-processed (instance)
Writer: (setf network-settings-cache-being-processed) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

cache-being-processed.

Reader: network-settings-client-buffer-size (instance)
Writer: (setf network-settings-client-buffer-size) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

client-buffer-size.

Reader: network-settings-encryption-fns (instance)
Writer: (setf network-settings-encryption-fns) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

encryption-fns.

Reader: network-settings-header-bytes (instance)
Writer: (setf network-settings-header-bytes) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

header-bytes.

Reader: network-settings-htable-entry-size (instance)
Writer: (setf network-settings-htable-entry-size) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

htable-entry-size.

Reader: network-settings-max-n-of-tcp-connections (instance)
Writer: (setf network-settings-max-n-of-tcp-connections) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

max-n-of-tcp-connections.

Reader: network-settings-remove-obsolete-keys-interval (instance)
Writer: (setf network-settings-remove-obsolete-keys-interval) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

remove-obsolete-keys-interval.

Reader: network-settings-server-buffer-size (instance)
Writer: (setf network-settings-server-buffer-size) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

server-buffer-size.

Reader: network-settings-share-cache-interval-in-sec (instance)
Writer: (setf network-settings-share-cache-interval-in-sec) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

share-cache-interval-in-sec.

Reader: network-settings-stop-hash-table-cleaning (instance)
Writer: (setf network-settings-stop-hash-table-cleaning) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

stop-hash-table-cleaning.

Reader: network-settings-stop-sync (instance)
Writer: (setf network-settings-stop-sync) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

stop-sync.

Reader: network-settings-stop-tcp-client (instance)
Writer: (setf network-settings-stop-tcp-client) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

stop-tcp-client.

Reader: network-settings-stop-tcp-server (instance)
Writer: (setf network-settings-stop-tcp-server) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

stop-tcp-server.

Reader: network-settings-stop-udp-server (instance)
Writer: (setf network-settings-stop-udp-server) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

stop-udp-server.

Reader: network-settings-tcp-client-reconnection-attempts (instance)
Writer: (setf network-settings-tcp-client-reconnection-attempts) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

tcp-client-reconnection-attempts.

Reader: network-settings-tcp-client-try-reconnect-after (instance)
Writer: (setf network-settings-tcp-client-try-reconnect-after) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

tcp-client-try-reconnect-after.

Reader: network-settings-time-to-wait-if-no-data (instance)
Writer: (setf network-settings-time-to-wait-if-no-data) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

time-to-wait-if-no-data.

Reader: network-settings-trailing-bytes (instance)
Writer: (setf network-settings-trailing-bytes) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

trailing-bytes.

Reader: network-settings-udp-socket (instance)
Writer: (setf network-settings-udp-socket) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

udp-socket.

Function: newhash-shared (key h-table-obj new-value)

API for setting value

Package

cl-replica.

Source

api.lisp.

Setf expanders to this function

(setf gethash-shared).

Function: newhash-shared-no-lock (key value del-p timestamp sht settings &optional infect-p)

Adds data to h-table and updates its cache

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: promote-timestamp (ts self)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Function: remhash-shared (key h-table-obj)

API for deleting key

Package

cl-replica.

Source

api.lisp.

Function: remhash-shared-no-lock (key sht)

Deletes key from h-table by setting del-p flag.
See Demers et al., Epidemic Algorithms for Replicated Database Maintenance (1989) to understand why one cannot simply delete a key-value pair from a replicated database.

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: remove-obsolete-keys (sht settings)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: send-echo (addr settings)

Connects to own tcp server and sends a dummy message.
Is used to promote server loops by one iteration forward in order to let them close the socket.

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: send-update (key value del-p timestamp node settings &optional retry-p)

Send gvalue data to another node

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: share-cache-periodically (sht settings)

Provides own cache to a random node

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: share-hash-table (h-table &key this-node other-nodes message-frame-header message-frame-trail htable-entry-size cache-length server-buffer-size client-buffer-size stop-sync time-to-wait-if-no-data max-n-of-tcp-connections stop-udp-server stop-tcp-server stop-tcp-client tcp-client-try-reconnect-after tcp-client-reconnection-attempts share-cache-interval-in-sec remove-obsolete-keys-interval stop-hash-table-cleaning cache-being-processed encryption-fns)

Nondestructively converts hash-table <key,value> into:
1. hash-table <key, #(value, death-certificate, timestamp)> 2. cache (list key timestamp)
and returns shared-hash-table-object.

Package

cl-replica.

Source

api.lisp.

Reader: shared-hash-table-clients-socket-pool (instance)
Writer: (setf shared-hash-table-clients-socket-pool) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

clients-socket-pool.

Reader: shared-hash-table-destroyed-p (instance)
Writer: (setf shared-hash-table-destroyed-p) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

destroyed-p.

Reader: shared-hash-table-last-keys-modified (instance)
Writer: (setf shared-hash-table-last-keys-modified) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

last-keys-modified.

Reader: shared-hash-table-last-keys-modified-max-length (instance)
Writer: (setf shared-hash-table-last-keys-modified-max-length) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

last-keys-modified-max-length.

Reader: shared-hash-table-lock (instance)
Writer: (setf shared-hash-table-lock) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

lock.

Reader: shared-hash-table-number-of-nodes (instance)
Writer: (setf shared-hash-table-number-of-nodes) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

number-of-nodes.

Reader: shared-hash-table-other-nodes (instance)
Writer: (setf shared-hash-table-other-nodes) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

other-nodes.

Reader: shared-hash-table-server-input-queue (instance)
Writer: (setf shared-hash-table-server-input-queue) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

server-input-queue.

Reader: shared-hash-table-server-socket (instance)
Writer: (setf shared-hash-table-server-socket) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

server-socket.

Reader: shared-hash-table-table (instance)
Writer: (setf shared-hash-table-table) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

table.

Reader: shared-hash-table-this-node (instance)
Writer: (setf shared-hash-table-this-node) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

this-node.

Reader: shared-hash-table-this-node-idx (instance)
Writer: (setf shared-hash-table-this-node-idx) (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Target Slot

this-node-idx.

Function: sort-for-consistency (list-of-ips)

Sort the list of ips.

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: start-server (addr queue settings)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: stop-communication (protocol settings &optional side)
Package

cl-replica.network-io.

Source

network-io.lisp.

Reader: timestamp-vclock (instance)
Writer: (setf timestamp-vclock) (instance)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Target Slot

vclock.

Function: timestamp<= (ts-1 ts-2)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.


5.1.4 Conditions

Condition: cache-being-shared

Throwing this error blocks the API and informs a caller that
an application cannot perform any operation on the shared-hash-table. Without this explicit condition, the application would be silently blocked by the mutex inside #’provide-cache. Explicit block is much better because the application has a possibility to use error handlers

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Direct superclasses

error.

Condition: concurrent-access
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: ts-1
Initargs

:ts-1

Readers

ts-1.

Writers

This slot is read-only.

Slot: ts-2
Initargs

:ts-2

Readers

ts-2.

Writers

This slot is read-only.


Previous: , Up: Public Interface   [Contents][Index]

5.1.5 Structures

Structure: timestamp
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: vclock
Type

simple-vector

Initform

#()

Readers

timestamp-vclock.

Writers

(setf timestamp-vclock).


5.2 Internals


Next: , Previous: , Up: Internals   [Contents][Index]

5.2.1 Macros

Macro: call-fn-in-interruptable-thread (delay stop-flag n-segments fn-with-args)

When delay >> 1, (sleep delay) would block the thread for a long time.
This macro solves that problem by splitting delay into n-segments time intervals and by checking stop-flag n-segments times withing the delay.

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Macro: dbind-with-mutex (vars h-table-obj &body body)

D-bind variables in vars to h-table-obj structure, acquire the lock, do the job in @body and release the lock

Package

cl-replica.

Source

api.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

5.2.2 Ordinary functions

Function: as-keyword (str)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: checkout-decoder (queue decoder)

Decodes and then resets the internal buffer (acc) of decoder

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: clean-shared-hash-table (sht)

Deletes all keys which have death-certificates (del-p flag)

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: copy-decoder (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: copy-network-settings (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: copy-shared-hash-table (instance)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: copy-timestamp (instance)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Function: decode (vec)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: decode-buffer (buffer decoder)

Implements two-step buffer decoder

Package

cl-replica.network-io.

Source

network-io.lisp.

Reader: decoder-acc (instance)
Writer: (setf decoder-acc) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

acc.

Reader: decoder-acc-min-size (instance)
Writer: (setf decoder-acc-min-size) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

acc-min-size.

Reader: decoder-decrypt-fn (instance)
Writer: (setf decoder-decrypt-fn) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

decrypt-fn.

Reader: decoder-header-bytes (instance)
Writer: (setf decoder-header-bytes) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

header-bytes.

Reader: decoder-header-size (instance)
Writer: (setf decoder-header-size) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

header-size.

Function: decoder-p (object)
Package

cl-replica.network-io.

Source

network-io.lisp.

Reader: decoder-prev-buffer-head (instance)
Writer: (setf decoder-prev-buffer-head) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

prev-buffer-head.

Reader: decoder-prev-buffer-trail (instance)
Writer: (setf decoder-prev-buffer-trail) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

prev-buffer-trail.

Reader: decoder-trailing-bytes (instance)
Writer: (setf decoder-trailing-bytes) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

trailing-bytes.

Reader: decoder-trailing-size (instance)
Writer: (setf decoder-trailing-size) (instance)
Package

cl-replica.network-io.

Source

network-io.lisp.

Target Slot

trailing-size.

Function: decrypt (data decrypt-fn)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: encode (obj)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: encrypt (data encrypt-fn)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: ensure-no-msg-makers (msg header-bytes trailing-bytes operation)

Throws error if message markers are found in message

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: handle-connection (connection queue server-buffer-size decoder)

Accumulate buffer content until critical mass is reached. Then decode it.

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: init-decoder (settings)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: make-decoder (&key acc acc-min-size header-bytes header-size trailing-bytes trailing-size decrypt-fn prev-buffer-trail prev-buffer-head)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: network-settings-p (object)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: nshuffle (sequence)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: obj-to-str (obj)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: parse-buffer (header-bytes header-size trailing-bytes trailing-size buffer)

Recursively traverses buffer and tries hard to find message frames separated by starting (header-bytes) and terminating (trailing-bytes) sequencies.
The algorithm works well even if
- small buffer size is used
- buffer contains junk data bytes from previous calls
- buffer contains ill-positioned message markers
However, if the buffer size is really tiny, some messages can get lost.
Note: buffer-size and trailing-size are provided as arguments and not calculated inside the function because a caller knows these values.

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: parse-network-address (addr)

Parses tcp://192.168.1.1:5550 to (values :tcp #(192 168 1 1) 5550)

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: provide-cache (sht settings)

Provides last keys modified in an extended form [(key timestamp) -> (list key value death-cert timestamp )]

Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: shared-hash-table-p (object)
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Function: split-string-by-delimiter (string delimiterp)

Lisp-is-cool-> (Lisp is cool) as strings. Delimiterp is a predicate.

Package

cl-replica.network-io.

Source

network-io.lisp.

Function: start-all-network-threads (h-table-obj)

API for activating inter nodes communication

Package

cl-replica.

Source

api.lisp.

Function: start-tcp-server (address port queue settings)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: start-udp-server (address port queue settings)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: stop-all-network-threads (settings)

API for disabling inter-nodes communication

Package

cl-replica.

Source

api.lisp.

Function: str-to-obj (str)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: timestamp-p (object)
Package

cl-replica.vector-clock.

Source

vector-clock.lisp.

Function: try-connect-until-success (socket address port settings)
Package

cl-replica.network-io.

Source

network-io.lisp.

Function: vec-length (vec)

Calculates the length of the vector

Package

cl-replica.vector-clock.

Source

vector-clock.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

5.2.3 Generic functions

Generic Reader: address (condition)
Package

cl-replica.network-io.

Methods
Reader Method: address ((condition network-address-parse-error))
Source

network-io.lisp.

Target Slot

address.

Generic Reader: data (condition)
Package

cl-replica.network-io.

Methods
Reader Method: data ((condition cannot-build-lisp-object-from-string))
Source

network-io.lisp.

Target Slot

data.

Generic Reader: data (condition)
Package

cl-replica.hashtable-ops.

Methods
Reader Method: data ((condition malformed-data))
Source

hashtable-ops.lisp.

Target Slot

data.

Generic Reader: error-msg (condition)
Package

cl-replica.network-io.

Methods
Reader Method: error-msg ((condition cannot-build-lisp-object-from-string))
Source

network-io.lisp.

Target Slot

error-msg.

Reader Method: error-msg ((condition network-address-parse-error))
Source

network-io.lisp.

Target Slot

error-msg.

Generic Reader: idx (condition)
Package

cl-replica.network-io.

Methods
Reader Method: idx ((condition msg-markers-found-in-data))
Source

network-io.lisp.

Target Slot

idx.

Generic Reader: marker (condition)
Package

cl-replica.network-io.

Methods
Reader Method: marker ((condition msg-markers-found-in-data))
Source

network-io.lisp.

Target Slot

marker.

Generic Reader: msg (condition)
Package

cl-replica.hashtable-ops.

Methods
Reader Method: msg ((condition malformed-data))
Source

hashtable-ops.lisp.

Target Slot

msg.

Generic Reader: operation (condition)
Package

cl-replica.network-io.

Methods
Reader Method: operation ((condition msg-markers-found-in-data))
Source

network-io.lisp.

Target Slot

operation.

Generic Reader: ts-1 (condition)
Package

cl-replica.vector-clock.

Methods
Reader Method: ts-1 ((condition concurrent-access))
Source

vector-clock.lisp.

Target Slot

ts-1.

Generic Reader: ts-2 (condition)
Package

cl-replica.vector-clock.

Methods
Reader Method: ts-2 ((condition concurrent-access))
Source

vector-clock.lisp.

Target Slot

ts-2.


Next: , Previous: , Up: Internals   [Contents][Index]

5.2.4 Conditions

Condition: cannot-build-lisp-object-from-string
Package

cl-replica.network-io.

Source

network-io.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: data
Initargs

:data

Readers

data.

Writers

This slot is read-only.

Slot: error-msg
Initargs

:error-msg

Readers

error-msg.

Writers

This slot is read-only.

Condition: malformed-data
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: data
Initargs

:data

Readers

data.

Writers

This slot is read-only.

Slot: msg
Initargs

:msg

Readers

msg.

Writers

This slot is read-only.

Condition: msg-markers-found-in-data
Package

cl-replica.network-io.

Source

network-io.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: operation
Initargs

:operation

Readers

operation.

Writers

This slot is read-only.

Slot: marker
Initargs

:marker

Readers

marker.

Writers

This slot is read-only.

Slot: idx
Initargs

:idx

Readers

idx.

Writers

This slot is read-only.

Condition: network-address-parse-error
Package

cl-replica.network-io.

Source

network-io.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: address
Initargs

:address

Readers

address.

Writers

This slot is read-only.

Slot: error-msg
Initargs

:error-msg

Readers

error-msg.

Writers

This slot is read-only.


Previous: , Up: Internals   [Contents][Index]

5.2.5 Structures

Structure: decoder
Package

cl-replica.network-io.

Source

network-io.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: acc
Readers

decoder-acc.

Writers

(setf decoder-acc).

Slot: acc-min-size
Readers

decoder-acc-min-size.

Writers

(setf decoder-acc-min-size).

Slot: header-bytes
Readers

decoder-header-bytes.

Writers

(setf decoder-header-bytes).

Slot: header-size
Readers

decoder-header-size.

Writers

(setf decoder-header-size).

Slot: trailing-bytes
Readers

decoder-trailing-bytes.

Writers

(setf decoder-trailing-bytes).

Slot: trailing-size
Readers

decoder-trailing-size.

Writers

(setf decoder-trailing-size).

Slot: decrypt-fn
Readers

decoder-decrypt-fn.

Writers

(setf decoder-decrypt-fn).

Slot: prev-buffer-trail
Readers

decoder-prev-buffer-trail.

Writers

(setf decoder-prev-buffer-trail).

Slot: prev-buffer-head
Readers

decoder-prev-buffer-head.

Writers

(setf decoder-prev-buffer-head).

Structure: network-settings
Package

cl-replica.network-io.

Source

network-io.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: htable-entry-size
Readers

network-settings-htable-entry-size.

Writers

(setf network-settings-htable-entry-size).

Slot: header-bytes
Readers

network-settings-header-bytes.

Writers

(setf network-settings-header-bytes).

Slot: trailing-bytes
Readers

network-settings-trailing-bytes.

Writers

(setf network-settings-trailing-bytes).

Slot: server-buffer-size
Readers

network-settings-server-buffer-size.

Writers

(setf network-settings-server-buffer-size).

Slot: client-buffer-size
Readers

network-settings-client-buffer-size.

Writers

(setf network-settings-client-buffer-size).

Slot: udp-socket
Readers

network-settings-udp-socket.

Writers

(setf network-settings-udp-socket).

Slot: stop-sync
Readers

network-settings-stop-sync.

Writers

(setf network-settings-stop-sync).

Slot: time-to-wait-if-no-data
Readers

network-settings-time-to-wait-if-no-data.

Writers

(setf network-settings-time-to-wait-if-no-data).

Slot: stop-udp-server
Readers

network-settings-stop-udp-server.

Writers

(setf network-settings-stop-udp-server).

Slot: stop-tcp-server
Readers

network-settings-stop-tcp-server.

Writers

(setf network-settings-stop-tcp-server).

Slot: stop-tcp-client
Readers

network-settings-stop-tcp-client.

Writers

(setf network-settings-stop-tcp-client).

Slot: max-n-of-tcp-connections
Readers

network-settings-max-n-of-tcp-connections.

Writers

(setf network-settings-max-n-of-tcp-connections).

Slot: tcp-client-try-reconnect-after
Readers

network-settings-tcp-client-try-reconnect-after.

Writers

(setf network-settings-tcp-client-try-reconnect-after).

Slot: tcp-client-reconnection-attempts
Readers

network-settings-tcp-client-reconnection-attempts.

Writers

(setf network-settings-tcp-client-reconnection-attempts).

Slot: share-cache-interval-in-sec
Readers

network-settings-share-cache-interval-in-sec.

Writers

(setf network-settings-share-cache-interval-in-sec).

Slot: remove-obsolete-keys-interval
Readers

network-settings-remove-obsolete-keys-interval.

Writers

(setf network-settings-remove-obsolete-keys-interval).

Slot: stop-hash-table-cleaning
Readers

network-settings-stop-hash-table-cleaning.

Writers

(setf network-settings-stop-hash-table-cleaning).

Slot: cache-being-processed
Readers

network-settings-cache-being-processed.

Writers

(setf network-settings-cache-being-processed).

Slot: encryption-fns
Readers

network-settings-encryption-fns.

Writers

(setf network-settings-encryption-fns).

Structure: shared-hash-table
Package

cl-replica.hashtable-ops.

Source

hashtable-ops.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: lock
Initform

(sb-thread:make-mutex)

Readers

shared-hash-table-lock.

Writers

(setf shared-hash-table-lock).

Slot: this-node
Readers

shared-hash-table-this-node.

Writers

(setf shared-hash-table-this-node).

Slot: other-nodes
Readers

shared-hash-table-other-nodes.

Writers

(setf shared-hash-table-other-nodes).

Slot: number-of-nodes
Readers

shared-hash-table-number-of-nodes.

Writers

(setf shared-hash-table-number-of-nodes).

Slot: this-node-idx
Readers

shared-hash-table-this-node-idx.

Writers

(setf shared-hash-table-this-node-idx).

Slot: clients-socket-pool
Readers

shared-hash-table-clients-socket-pool.

Writers

(setf shared-hash-table-clients-socket-pool).

Slot: server-socket
Readers

shared-hash-table-server-socket.

Writers

(setf shared-hash-table-server-socket).

Slot: server-input-queue
Readers

shared-hash-table-server-input-queue.

Writers

(setf shared-hash-table-server-input-queue).

Slot: table
Readers

shared-hash-table-table.

Writers

(setf shared-hash-table-table).

Slot: last-keys-modified
Readers

shared-hash-table-last-keys-modified.

Writers

(setf shared-hash-table-last-keys-modified).

Slot: last-keys-modified-max-length
Readers

shared-hash-table-last-keys-modified-max-length.

Writers

(setf shared-hash-table-last-keys-modified-max-length).

Slot: destroyed-p
Readers

shared-hash-table-destroyed-p.

Writers

(setf shared-hash-table-destroyed-p).


Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts


Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   C   D   E   F   G   H   I   M   N   O   P   R   S   T   V  
Index Entry  Section

(
(setf decoder-acc): Private ordinary functions
(setf decoder-acc-min-size): Private ordinary functions
(setf decoder-decrypt-fn): Private ordinary functions
(setf decoder-header-bytes): Private ordinary functions
(setf decoder-header-size): Private ordinary functions
(setf decoder-prev-buffer-head): Private ordinary functions
(setf decoder-prev-buffer-trail): Private ordinary functions
(setf decoder-trailing-bytes): Private ordinary functions
(setf decoder-trailing-size): Private ordinary functions
(setf gethash-shared): Public setf expanders
(setf network-settings-cache-being-processed): Public ordinary functions
(setf network-settings-client-buffer-size): Public ordinary functions
(setf network-settings-encryption-fns): Public ordinary functions
(setf network-settings-header-bytes): Public ordinary functions
(setf network-settings-htable-entry-size): Public ordinary functions
(setf network-settings-max-n-of-tcp-connections): Public ordinary functions
(setf network-settings-remove-obsolete-keys-interval): Public ordinary functions
(setf network-settings-server-buffer-size): Public ordinary functions
(setf network-settings-share-cache-interval-in-sec): Public ordinary functions
(setf network-settings-stop-hash-table-cleaning): Public ordinary functions
(setf network-settings-stop-sync): Public ordinary functions
(setf network-settings-stop-tcp-client): Public ordinary functions
(setf network-settings-stop-tcp-server): Public ordinary functions
(setf network-settings-stop-udp-server): Public ordinary functions
(setf network-settings-tcp-client-reconnection-attempts): Public ordinary functions
(setf network-settings-tcp-client-try-reconnect-after): Public ordinary functions
(setf network-settings-time-to-wait-if-no-data): Public ordinary functions
(setf network-settings-trailing-bytes): Public ordinary functions
(setf network-settings-udp-socket): Public ordinary functions
(setf shared-hash-table-clients-socket-pool): Public ordinary functions
(setf shared-hash-table-destroyed-p): Public ordinary functions
(setf shared-hash-table-last-keys-modified): Public ordinary functions
(setf shared-hash-table-last-keys-modified-max-length): Public ordinary functions
(setf shared-hash-table-lock): Public ordinary functions
(setf shared-hash-table-number-of-nodes): Public ordinary functions
(setf shared-hash-table-other-nodes): Public ordinary functions
(setf shared-hash-table-server-input-queue): Public ordinary functions
(setf shared-hash-table-server-socket): Public ordinary functions
(setf shared-hash-table-table): Public ordinary functions
(setf shared-hash-table-this-node): Public ordinary functions
(setf shared-hash-table-this-node-idx): Public ordinary functions
(setf timestamp-vclock): Public ordinary functions

A
address: Private generic functions
address: Private generic functions
apply-updates-from-other-nodes: Public ordinary functions
as-keyword: Private ordinary functions

C
call-fn-in-interruptable-thread: Private macros
checkout-decoder: Private ordinary functions
clean-shared-hash-table: Private ordinary functions
clrhash-shared: Public ordinary functions
compare-and-update: Public ordinary functions
connect-to-remote-peer: Public ordinary functions
copy-decoder: Private ordinary functions
copy-network-settings: Private ordinary functions
copy-shared-hash-table: Private ordinary functions
copy-timestamp: Private ordinary functions

D
data: Private generic functions
data: Private generic functions
data: Private generic functions
data: Private generic functions
dbind-with-mutex: Private macros
decode: Private ordinary functions
decode-buffer: Private ordinary functions
decoder-acc: Private ordinary functions
decoder-acc-min-size: Private ordinary functions
decoder-decrypt-fn: Private ordinary functions
decoder-header-bytes: Private ordinary functions
decoder-header-size: Private ordinary functions
decoder-p: Private ordinary functions
decoder-prev-buffer-head: Private ordinary functions
decoder-prev-buffer-trail: Private ordinary functions
decoder-trailing-bytes: Private ordinary functions
decoder-trailing-size: Private ordinary functions
decrypt: Private ordinary functions
destroy-shared-htable: Public ordinary functions

E
encode: Private ordinary functions
encrypt: Private ordinary functions
ensure-no-msg-makers: Private ordinary functions
error-msg: Private generic functions
error-msg: Private generic functions
error-msg: Private generic functions

F
Function, (setf decoder-acc): Private ordinary functions
Function, (setf decoder-acc-min-size): Private ordinary functions
Function, (setf decoder-decrypt-fn): Private ordinary functions
Function, (setf decoder-header-bytes): Private ordinary functions
Function, (setf decoder-header-size): Private ordinary functions
Function, (setf decoder-prev-buffer-head): Private ordinary functions
Function, (setf decoder-prev-buffer-trail): Private ordinary functions
Function, (setf decoder-trailing-bytes): Private ordinary functions
Function, (setf decoder-trailing-size): Private ordinary functions
Function, (setf network-settings-cache-being-processed): Public ordinary functions
Function, (setf network-settings-client-buffer-size): Public ordinary functions
Function, (setf network-settings-encryption-fns): Public ordinary functions
Function, (setf network-settings-header-bytes): Public ordinary functions
Function, (setf network-settings-htable-entry-size): Public ordinary functions
Function, (setf network-settings-max-n-of-tcp-connections): Public ordinary functions
Function, (setf network-settings-remove-obsolete-keys-interval): Public ordinary functions
Function, (setf network-settings-server-buffer-size): Public ordinary functions
Function, (setf network-settings-share-cache-interval-in-sec): Public ordinary functions
Function, (setf network-settings-stop-hash-table-cleaning): Public ordinary functions
Function, (setf network-settings-stop-sync): Public ordinary functions
Function, (setf network-settings-stop-tcp-client): Public ordinary functions
Function, (setf network-settings-stop-tcp-server): Public ordinary functions
Function, (setf network-settings-stop-udp-server): Public ordinary functions
Function, (setf network-settings-tcp-client-reconnection-attempts): Public ordinary functions
Function, (setf network-settings-tcp-client-try-reconnect-after): Public ordinary functions
Function, (setf network-settings-time-to-wait-if-no-data): Public ordinary functions
Function, (setf network-settings-trailing-bytes): Public ordinary functions
Function, (setf network-settings-udp-socket): Public ordinary functions
Function, (setf shared-hash-table-clients-socket-pool): Public ordinary functions
Function, (setf shared-hash-table-destroyed-p): Public ordinary functions
Function, (setf shared-hash-table-last-keys-modified): Public ordinary functions
Function, (setf shared-hash-table-last-keys-modified-max-length): Public ordinary functions
Function, (setf shared-hash-table-lock): Public ordinary functions
Function, (setf shared-hash-table-number-of-nodes): Public ordinary functions
Function, (setf shared-hash-table-other-nodes): Public ordinary functions
Function, (setf shared-hash-table-server-input-queue): Public ordinary functions
Function, (setf shared-hash-table-server-socket): Public ordinary functions
Function, (setf shared-hash-table-table): Public ordinary functions
Function, (setf shared-hash-table-this-node): Public ordinary functions
Function, (setf shared-hash-table-this-node-idx): Public ordinary functions
Function, (setf timestamp-vclock): Public ordinary functions
Function, apply-updates-from-other-nodes: Public ordinary functions
Function, as-keyword: Private ordinary functions
Function, checkout-decoder: Private ordinary functions
Function, clean-shared-hash-table: Private ordinary functions
Function, clrhash-shared: Public ordinary functions
Function, compare-and-update: Public ordinary functions
Function, connect-to-remote-peer: Public ordinary functions
Function, copy-decoder: Private ordinary functions
Function, copy-network-settings: Private ordinary functions
Function, copy-shared-hash-table: Private ordinary functions
Function, copy-timestamp: Private ordinary functions
Function, decode: Private ordinary functions
Function, decode-buffer: Private ordinary functions
Function, decoder-acc: Private ordinary functions
Function, decoder-acc-min-size: Private ordinary functions
Function, decoder-decrypt-fn: Private ordinary functions
Function, decoder-header-bytes: Private ordinary functions
Function, decoder-header-size: Private ordinary functions
Function, decoder-p: Private ordinary functions
Function, decoder-prev-buffer-head: Private ordinary functions
Function, decoder-prev-buffer-trail: Private ordinary functions
Function, decoder-trailing-bytes: Private ordinary functions
Function, decoder-trailing-size: Private ordinary functions
Function, decrypt: Private ordinary functions
Function, destroy-shared-htable: Public ordinary functions
Function, encode: Private ordinary functions
Function, encrypt: Private ordinary functions
Function, ensure-no-msg-makers: Private ordinary functions
Function, gethash-shared: Public ordinary functions
Function, gethash-shared-no-lock: Public ordinary functions
Function, handle-connection: Private ordinary functions
Function, init-decoder: Private ordinary functions
Function, init-gvalue: Public ordinary functions
Function, init-timestamp: Public ordinary functions
Function, make-decoder: Private ordinary functions
Function, make-network-settings: Public ordinary functions
Function, make-shared-hash-table: Public ordinary functions
Function, make-timestamp: Public ordinary functions
Function, maphash-shared: Public ordinary functions
Function, network-settings-cache-being-processed: Public ordinary functions
Function, network-settings-client-buffer-size: Public ordinary functions
Function, network-settings-encryption-fns: Public ordinary functions
Function, network-settings-header-bytes: Public ordinary functions
Function, network-settings-htable-entry-size: Public ordinary functions
Function, network-settings-max-n-of-tcp-connections: Public ordinary functions
Function, network-settings-p: Private ordinary functions
Function, network-settings-remove-obsolete-keys-interval: Public ordinary functions
Function, network-settings-server-buffer-size: Public ordinary functions
Function, network-settings-share-cache-interval-in-sec: Public ordinary functions
Function, network-settings-stop-hash-table-cleaning: Public ordinary functions
Function, network-settings-stop-sync: Public ordinary functions
Function, network-settings-stop-tcp-client: Public ordinary functions
Function, network-settings-stop-tcp-server: Public ordinary functions
Function, network-settings-stop-udp-server: Public ordinary functions
Function, network-settings-tcp-client-reconnection-attempts: Public ordinary functions
Function, network-settings-tcp-client-try-reconnect-after: Public ordinary functions
Function, network-settings-time-to-wait-if-no-data: Public ordinary functions
Function, network-settings-trailing-bytes: Public ordinary functions
Function, network-settings-udp-socket: Public ordinary functions
Function, newhash-shared: Public ordinary functions
Function, newhash-shared-no-lock: Public ordinary functions
Function, nshuffle: Private ordinary functions
Function, obj-to-str: Private ordinary functions
Function, parse-buffer: Private ordinary functions
Function, parse-network-address: Private ordinary functions
Function, promote-timestamp: Public ordinary functions
Function, provide-cache: Private ordinary functions
Function, remhash-shared: Public ordinary functions
Function, remhash-shared-no-lock: Public ordinary functions
Function, remove-obsolete-keys: Public ordinary functions
Function, send-echo: Public ordinary functions
Function, send-update: Public ordinary functions
Function, share-cache-periodically: Public ordinary functions
Function, share-hash-table: Public ordinary functions
Function, shared-hash-table-clients-socket-pool: Public ordinary functions
Function, shared-hash-table-destroyed-p: Public ordinary functions
Function, shared-hash-table-last-keys-modified: Public ordinary functions
Function, shared-hash-table-last-keys-modified-max-length: Public ordinary functions
Function, shared-hash-table-lock: Public ordinary functions
Function, shared-hash-table-number-of-nodes: Public ordinary functions
Function, shared-hash-table-other-nodes: Public ordinary functions
Function, shared-hash-table-p: Private ordinary functions
Function, shared-hash-table-server-input-queue: Public ordinary functions
Function, shared-hash-table-server-socket: Public ordinary functions
Function, shared-hash-table-table: Public ordinary functions
Function, shared-hash-table-this-node: Public ordinary functions
Function, shared-hash-table-this-node-idx: Public ordinary functions
Function, sort-for-consistency: Public ordinary functions
Function, split-string-by-delimiter: Private ordinary functions
Function, start-all-network-threads: Private ordinary functions
Function, start-server: Public ordinary functions
Function, start-tcp-server: Private ordinary functions
Function, start-udp-server: Private ordinary functions
Function, stop-all-network-threads: Private ordinary functions
Function, stop-communication: Public ordinary functions
Function, str-to-obj: Private ordinary functions
Function, timestamp-p: Private ordinary functions
Function, timestamp-vclock: Public ordinary functions
Function, timestamp<=: Public ordinary functions
Function, try-connect-until-success: Private ordinary functions
Function, vec-length: Private ordinary functions

G
Generic Function, address: Private generic functions
Generic Function, data: Private generic functions
Generic Function, data: Private generic functions
Generic Function, error-msg: Private generic functions
Generic Function, idx: Private generic functions
Generic Function, marker: Private generic functions
Generic Function, msg: Private generic functions
Generic Function, operation: Private generic functions
Generic Function, ts-1: Private generic functions
Generic Function, ts-2: Private generic functions
gethash-shared: Public ordinary functions
gethash-shared-no-lock: Public ordinary functions
gvalue-dbind: Public macros

H
handle-connection: Private ordinary functions

I
idx: Private generic functions
idx: Private generic functions
init-decoder: Private ordinary functions
init-gvalue: Public ordinary functions
init-timestamp: Public ordinary functions

M
Macro, call-fn-in-interruptable-thread: Private macros
Macro, dbind-with-mutex: Private macros
Macro, gvalue-dbind: Public macros
make-decoder: Private ordinary functions
make-network-settings: Public ordinary functions
make-shared-hash-table: Public ordinary functions
make-timestamp: Public ordinary functions
maphash-shared: Public ordinary functions
marker: Private generic functions
marker: Private generic functions
Method, address: Private generic functions
Method, data: Private generic functions
Method, data: Private generic functions
Method, error-msg: Private generic functions
Method, error-msg: Private generic functions
Method, idx: Private generic functions
Method, marker: Private generic functions
Method, msg: Private generic functions
Method, operation: Private generic functions
Method, ts-1: Private generic functions
Method, ts-2: Private generic functions
msg: Private generic functions
msg: Private generic functions

N
network-settings-cache-being-processed: Public ordinary functions
network-settings-client-buffer-size: Public ordinary functions
network-settings-encryption-fns: Public ordinary functions
network-settings-header-bytes: Public ordinary functions
network-settings-htable-entry-size: Public ordinary functions
network-settings-max-n-of-tcp-connections: Public ordinary functions
network-settings-p: Private ordinary functions
network-settings-remove-obsolete-keys-interval: Public ordinary functions
network-settings-server-buffer-size: Public ordinary functions
network-settings-share-cache-interval-in-sec: Public ordinary functions
network-settings-stop-hash-table-cleaning: Public ordinary functions
network-settings-stop-sync: Public ordinary functions
network-settings-stop-tcp-client: Public ordinary functions
network-settings-stop-tcp-server: Public ordinary functions
network-settings-stop-udp-server: Public ordinary functions
network-settings-tcp-client-reconnection-attempts: Public ordinary functions
network-settings-tcp-client-try-reconnect-after: Public ordinary functions
network-settings-time-to-wait-if-no-data: Public ordinary functions
network-settings-trailing-bytes: Public ordinary functions
network-settings-udp-socket: Public ordinary functions
newhash-shared: Public ordinary functions
newhash-shared-no-lock: Public ordinary functions
nshuffle: Private ordinary functions

O
obj-to-str: Private ordinary functions
operation: Private generic functions
operation: Private generic functions

P
parse-buffer: Private ordinary functions
parse-network-address: Private ordinary functions
promote-timestamp: Public ordinary functions
provide-cache: Private ordinary functions

R
remhash-shared: Public ordinary functions
remhash-shared-no-lock: Public ordinary functions
remove-obsolete-keys: Public ordinary functions

S
send-echo: Public ordinary functions
send-update: Public ordinary functions
Setf Expander, (setf gethash-shared): Public setf expanders
share-cache-periodically: Public ordinary functions
share-hash-table: Public ordinary functions
shared-hash-table-clients-socket-pool: Public ordinary functions
shared-hash-table-destroyed-p: Public ordinary functions
shared-hash-table-last-keys-modified: Public ordinary functions
shared-hash-table-last-keys-modified-max-length: Public ordinary functions
shared-hash-table-lock: Public ordinary functions
shared-hash-table-number-of-nodes: Public ordinary functions
shared-hash-table-other-nodes: Public ordinary functions
shared-hash-table-p: Private ordinary functions
shared-hash-table-server-input-queue: Public ordinary functions
shared-hash-table-server-socket: Public ordinary functions
shared-hash-table-table: Public ordinary functions
shared-hash-table-this-node: Public ordinary functions
shared-hash-table-this-node-idx: Public ordinary functions
sort-for-consistency: Public ordinary functions
split-string-by-delimiter: Private ordinary functions
start-all-network-threads: Private ordinary functions
start-server: Public ordinary functions
start-tcp-server: Private ordinary functions
start-udp-server: Private ordinary functions
stop-all-network-threads: Private ordinary functions
stop-communication: Public ordinary functions
str-to-obj: Private ordinary functions

T
timestamp-p: Private ordinary functions
timestamp-vclock: Public ordinary functions
timestamp<=: Public ordinary functions
try-connect-until-success: Private ordinary functions
ts-1: Private generic functions
ts-1: Private generic functions
ts-2: Private generic functions
ts-2: Private generic functions

V
vec-length: Private ordinary functions

Jump to:   (  
A   C   D   E   F   G   H   I   M   N   O   P   R   S   T   V  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   A   C   D   E   H   I   L   M   N   O   P   R   S   T   U   V  
Index Entry  Section

A
acc: Private structures
acc-min-size: Private structures
address: Private conditions

C
cache-being-processed: Private structures
client-buffer-size: Private structures
clients-socket-pool: Private structures

D
data: Private conditions
data: Private conditions
decrypt-fn: Private structures
destroyed-p: Private structures

E
encryption-fns: Private structures
error-msg: Private conditions
error-msg: Private conditions

H
header-bytes: Private structures
header-bytes: Private structures
header-size: Private structures
htable-entry-size: Private structures

I
idx: Private conditions

L
last-keys-modified: Private structures
last-keys-modified-max-length: Private structures
lock: Private structures

M
marker: Private conditions
max-n-of-tcp-connections: Private structures
msg: Private conditions

N
number-of-nodes: Private structures

O
operation: Private conditions
other-nodes: Private structures

P
prev-buffer-head: Private structures
prev-buffer-trail: Private structures

R
remove-obsolete-keys-interval: Private structures

S
server-buffer-size: Private structures
server-input-queue: Private structures
server-socket: Private structures
share-cache-interval-in-sec: Private structures
Slot, acc: Private structures
Slot, acc-min-size: Private structures
Slot, address: Private conditions
Slot, cache-being-processed: Private structures
Slot, client-buffer-size: Private structures
Slot, clients-socket-pool: Private structures
Slot, data: Private conditions
Slot, data: Private conditions
Slot, decrypt-fn: Private structures
Slot, destroyed-p: Private structures
Slot, encryption-fns: Private structures
Slot, error-msg: Private conditions
Slot, error-msg: Private conditions
Slot, header-bytes: Private structures
Slot, header-bytes: Private structures
Slot, header-size: Private structures
Slot, htable-entry-size: Private structures
Slot, idx: Private conditions
Slot, last-keys-modified: Private structures
Slot, last-keys-modified-max-length: Private structures
Slot, lock: Private structures
Slot, marker: Private conditions
Slot, max-n-of-tcp-connections: Private structures
Slot, msg: Private conditions
Slot, number-of-nodes: Private structures
Slot, operation: Private conditions
Slot, other-nodes: Private structures
Slot, prev-buffer-head: Private structures
Slot, prev-buffer-trail: Private structures
Slot, remove-obsolete-keys-interval: Private structures
Slot, server-buffer-size: Private structures
Slot, server-input-queue: Private structures
Slot, server-socket: Private structures
Slot, share-cache-interval-in-sec: Private structures
Slot, stop-hash-table-cleaning: Private structures
Slot, stop-sync: Private structures
Slot, stop-tcp-client: Private structures
Slot, stop-tcp-server: Private structures
Slot, stop-udp-server: Private structures
Slot, table: Private structures
Slot, tcp-client-reconnection-attempts: Private structures
Slot, tcp-client-try-reconnect-after: Private structures
Slot, this-node: Private structures
Slot, this-node-idx: Private structures
Slot, time-to-wait-if-no-data: Private structures
Slot, trailing-bytes: Private structures
Slot, trailing-bytes: Private structures
Slot, trailing-size: Private structures
Slot, ts-1: Public conditions
Slot, ts-2: Public conditions
Slot, udp-socket: Private structures
Slot, vclock: Public structures
stop-hash-table-cleaning: Private structures
stop-sync: Private structures
stop-tcp-client: Private structures
stop-tcp-server: Private structures
stop-udp-server: Private structures

T
table: Private structures
tcp-client-reconnection-attempts: Private structures
tcp-client-try-reconnect-after: Private structures
this-node: Private structures
this-node-idx: Private structures
time-to-wait-if-no-data: Private structures
trailing-bytes: Private structures
trailing-bytes: Private structures
trailing-size: Private structures
ts-1: Public conditions
ts-2: Public conditions

U
udp-socket: Private structures

V
vclock: Public structures

Jump to:   A   C   D   E   H   I   L   M   N   O   P   R   S   T   U   V  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   A   C   D   F   H   M   N   P   S   T   V  
Index Entry  Section

A
api.lisp: The cl-replica/api․lisp file

C
cache-being-shared: Public conditions
cannot-build-lisp-object-from-string: Private conditions
cl-replica: The cl-replica system
cl-replica: The cl-replica package
cl-replica.asd: The cl-replica/cl-replica․asd file
cl-replica.hashtable-ops: The cl-replica․hashtable-ops package
cl-replica.network-io: The cl-replica․network-io package
cl-replica.vector-clock: The cl-replica․vector-clock package
concurrent-access: Public conditions
Condition, cache-being-shared: Public conditions
Condition, cannot-build-lisp-object-from-string: Private conditions
Condition, concurrent-access: Public conditions
Condition, malformed-data: Private conditions
Condition, msg-markers-found-in-data: Private conditions
Condition, network-address-parse-error: Private conditions

D
decoder: Private structures

F
File, api.lisp: The cl-replica/api․lisp file
File, cl-replica.asd: The cl-replica/cl-replica․asd file
File, hashtable-ops.lisp: The cl-replica/hashtable-ops․lisp file
File, network-io.lisp: The cl-replica/network-io․lisp file
File, packages.lisp: The cl-replica/packages․lisp file
File, vector-clock.lisp: The cl-replica/vector-clock․lisp file

H
hashtable-ops.lisp: The cl-replica/hashtable-ops․lisp file

M
malformed-data: Private conditions
msg-markers-found-in-data: Private conditions

N
network-address-parse-error: Private conditions
network-io.lisp: The cl-replica/network-io․lisp file
network-settings: Private structures

P
Package, cl-replica: The cl-replica package
Package, cl-replica.hashtable-ops: The cl-replica․hashtable-ops package
Package, cl-replica.network-io: The cl-replica․network-io package
Package, cl-replica.vector-clock: The cl-replica․vector-clock package
packages.lisp: The cl-replica/packages․lisp file

S
shared-hash-table: Private structures
Structure, decoder: Private structures
Structure, network-settings: Private structures
Structure, shared-hash-table: Private structures
Structure, timestamp: Public structures
System, cl-replica: The cl-replica system

T
timestamp: Public structures

V
vector-clock.lisp: The cl-replica/vector-clock․lisp file

Jump to:   A   C   D   F   H   M   N   P   S   T   V