LICENSE NEWS README
Raindrops Aggregate Aggregate::LastDataRecv Aggregate::PMQ InetDiagSocket LastDataRecv Linux ListenStats Middleware Middleware::Proxy Struct TCP_Info Watcher

Methods

::new #[] #[]= #capa #decr #evaporate! #incr #initialize_copy #size #size= #to_ary

class Raindrops

Each Raindrops object is a container that holds several counters. It is internally a page-aligned, shared memory area that allows atomic increments, decrements, assignments and reads without any locking.

rd = Raindrops.new 4
rd.incr(0, 1)   -> 1
rd.to_ary       -> [ 1, 0, 0, 0 ]

Unlike many classes in this package, the core Raindrops class is intended to be portable to all reasonably modern *nix systems supporting mmap(). Please let us know if you have portability issues, patches or pull requests at raindrops-public@bogomips.org

Constants

MAX

The maximum value a raindrop counter can hold

PAGE_SIZE

The size of one page of memory for a mmap()-ed Raindrops region. Typically 4096 bytes under Linux.

SIZE

The size (in bytes) of a slot in a Raindrops object. This is the size of a word on single CPU systems and the size of the L1 cache line size if detectable.

Defaults to 128 bytes if undetectable.

Public Class Methods

Raindrops.new(size)  -> raindrops object source

Initializes a Raindrops object to hold size counters. size is only a hint and the actual number of counters the object has is dependent on the CPU model, number of cores, and page size of the machine. The actual size of the object will always be equal or greater than the specified size.

Public Instance Methods

rd[index]    -> value source

Returns the value of the slot designated by index

rd[index] = value source

Assigns value to the slot designated by index

rd.capa              -> Integer source

Returns the number of slots allocated (but not necessarily used) by the Raindrops object.

rd.decr(index[, number])     -> result source

Decrements the value referred to by the index by number. number defaults to 1 if unspecified.

rd.evaporate!        -> nil source

Releases mmap()-ed memory allocated for the Raindrops object back to the OS. The Ruby garbage collector will also release memory automatically when it is not needed, but this forces release under high memory pressure.

rd.incr(index[, number])     -> result source

Increments the value referred to by the index by number. number defaults to 1 if unspecified.

rd.dup               -> rd_copy source

Duplicates and snapshots the current state of a Raindrops object.

rd.size              -> Integer source

Returns the number of counters a Raindrops object can hold. Due to page alignment, this is always equal or greater than the number of requested slots passed to ::new

rd.size = new_size source

Increases or decreases the current capacity of our Raindrop. Raises RangeError if new_size is too big or small for the current backing store

rd.to_ary    -> Array source

converts the Raindrops structure to an Array


Pages Classes Methods
mail archives: https://bogomips.org/raindrops-public/
	http://ou63pmih66umazou.onion/raindrops-public 
	nntp://news.public-inbox.org/inbox.comp.lang.ruby.raindrops 
	nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.raindrops 
public: raindrops-public@bogomips.org / private: raindrops@bogomips.org
source code: git clone git://bogomips.org/raindrops.git
	git clone https://bogomips.org/raindrops.git