localmemcache 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +18 -11
- data/Rakefile +22 -7
- data/VERSION +1 -1
- data/bench/common.rb +7 -0
- data/bench/gdbm_vs_lmc +10 -0
- data/bench/gdbm_vs_lmc.rb +29 -0
- data/bench/lmc_bench +11 -0
- data/bench/lmc_bench.rb +27 -0
- data/bench/memcached_bench +8 -0
- data/bench/memcached_bench.rb +19 -0
- data/bench/tyrant_bench +10 -0
- data/bench/tyrant_bench.rb +19 -0
- data/example/hello.c +1 -1
- data/site/doc/classes/LocalMemCache/ArgError.html +113 -0
- data/site/doc/classes/LocalMemCache/InitError.html +113 -0
- data/site/doc/classes/LocalMemCache/LocalMemCacheError.html +111 -0
- data/site/doc/classes/LocalMemCache/LockError.html +113 -0
- data/site/doc/classes/LocalMemCache/LockTimedOut.html +113 -0
- data/site/doc/classes/LocalMemCache/MemoryPoolClosed.html +113 -0
- data/site/doc/classes/LocalMemCache/MemoryPoolFull.html +113 -0
- data/site/doc/classes/LocalMemCache/OutOfMemoryError.html +113 -0
- data/site/doc/classes/LocalMemCache/RecoveryFailed.html +113 -0
- data/site/doc/classes/LocalMemCache/ShmError.html +113 -0
- data/site/doc/classes/LocalMemCache/ShmLockFailed.html +113 -0
- data/site/doc/classes/LocalMemCache/ShmUnlockFailed.html +113 -0
- data/site/doc/classes/LocalMemCache.html +515 -0
- data/site/doc/classes/LocalMemCache.src/M000001.html +19 -0
- data/site/doc/classes/LocalMemCache.src/M000002.html +18 -0
- data/site/doc/classes/LocalMemCache.src/M000003.html +18 -0
- data/site/doc/classes/LocalMemCache.src/M000004.html +39 -0
- data/site/doc/classes/LocalMemCache.src/M000005.html +29 -0
- data/site/doc/classes/LocalMemCache.src/M000006.html +23 -0
- data/site/doc/classes/LocalMemCache.src/M000007.html +23 -0
- data/site/doc/classes/LocalMemCache.src/M000008.html +22 -0
- data/site/doc/classes/LocalMemCache.src/M000009.html +24 -0
- data/site/doc/classes/LocalMemCache.src/M000010.html +24 -0
- data/site/doc/classes/LocalMemCache.src/M000011.html +22 -0
- data/site/doc/classes/LocalMemCache.src/M000012.html +22 -0
- data/site/doc/created.rid +1 -0
- data/site/doc/files/__/src/ruby-binding/extconf_rb.html +108 -0
- data/site/doc/files/__/src/ruby-binding/localmemcache_rb.html +108 -0
- data/site/doc/files/__/src/ruby-binding/rblocalmemcache_c.html +101 -0
- data/site/doc/fr_class_index.html +39 -0
- data/site/doc/fr_file_index.html +28 -0
- data/site/doc/fr_method_index.html +38 -0
- data/site/doc/index.html +24 -0
- data/site/doc/rdoc-style.css +208 -0
- data/site/index.html +50 -46
- data/src/lmc_common.c +22 -0
- data/src/lmc_common.h +4 -0
- data/src/lmc_hashtable.h +1 -1
- data/src/lmc_lock.c +17 -3
- data/src/lmc_shm.c +4 -2
- data/src/lmc_valloc.c +6 -5
- data/src/lmc_valloc.h +1 -0
- data/src/localmemcache.c +56 -35
- data/src/localmemcache.h +161 -4
- data/src/ruby-binding/localmemcache.rb +48 -16
- data/src/ruby-binding/rblocalmemcache.c +131 -24
- data/src/tests/bench.rb +1 -1
- data/src/tests/lmc.rb +11 -2
- metadata +48 -7
- data/INTERNALS +0 -26
- data/example/hello.bin +0 -0
data/README
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
Localmemcache README
|
2
2
|
=====================
|
3
3
|
|
4
|
-
|
4
|
+
A persistent key-value database based on mmap()'ed shared memory.
|
5
5
|
|
6
6
|
* http://localmemcache.rubyforge.org/
|
7
7
|
|
8
8
|
WHAT IS IT?
|
9
9
|
===========
|
10
10
|
|
11
|
-
Localmemcache is a library for C and ruby that aims to provide
|
12
|
-
similar to memcached but for accessing local data instead of
|
13
|
-
based on mmap()'ed shared memory for maximum speed.
|
11
|
+
Localmemcache is a library for C and ruby that aims to provide
|
12
|
+
an interface similar to memcached but for accessing local data instead of
|
13
|
+
remote data. It's based on mmap()'ed shared memory for maximum speed.
|
14
|
+
Since version 0.3.0 it supports persistence, also making it a fast
|
15
|
+
alternative to GDBM and Berkeley DB.
|
14
16
|
|
15
17
|
SUPPORTED SYSTEMS
|
16
18
|
=================
|
17
19
|
|
18
|
-
-
|
19
|
-
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
- a >=64bit Unix
|
21
|
+
- a file system that offers sparse files
|
22
|
+
|
23
|
+
Note for OS X: OS X disqualifies as HFS+ doesn't have sparse files and
|
24
|
+
sem_timedwait() and sem_getvalue() aren't supported as well.
|
25
|
+
|
26
|
+
Note for FreeBSD: It has been reported that Localmemcache sometimes hangs
|
27
|
+
there, it is not yet clear what the problem is.
|
24
28
|
|
25
29
|
EXAMPLE
|
26
30
|
=======
|
@@ -28,7 +32,10 @@ EXAMPLE
|
|
28
32
|
In Ruby:
|
29
33
|
|
30
34
|
require 'localmemcache'
|
31
|
-
|
35
|
+
# 1. the memcached way
|
36
|
+
# $lm = LocalMemCache.new :namespace => :viewcounters
|
37
|
+
# 2. the GDBM way
|
38
|
+
$lm = LocalMemCache.new :filename => "./viewcounters.lmc"
|
32
39
|
$lm[:foo] = 1
|
33
40
|
$lm[:foo]
|
34
41
|
$lm.delete(:foo)
|
data/Rakefile
CHANGED
@@ -32,6 +32,18 @@ task :sanity_test do
|
|
32
32
|
"make -C src/tests/ && ./src/tests/lmc "
|
33
33
|
end
|
34
34
|
|
35
|
+
task :performance_test do
|
36
|
+
sh "./configure && make -C src clean && make -C src && " +
|
37
|
+
"(cd src/ruby-binding; ruby extconf.rb) && " +
|
38
|
+
"make -C src/ruby-binding/ && " +
|
39
|
+
"(cd src/tests; ruby extconf.rb) && " +
|
40
|
+
"make -C src/tests/ && ./src/tests/lmc; " +
|
41
|
+
"./src/tests/bench; " +
|
42
|
+
"ls -al /var/tmp/localmemcache/speed-comparison.lmc && " +
|
43
|
+
"du -h /var/tmp/localmemcache/speed-comparison.lmc && " +
|
44
|
+
"uname -a && ruby -v "
|
45
|
+
end
|
46
|
+
|
35
47
|
task :c_api_package do
|
36
48
|
tgz = "pkg/localmemcache-#{version}.tar.gz"
|
37
49
|
sh "test -d pkg || mkdir pkg"
|
@@ -42,8 +54,8 @@ end
|
|
42
54
|
#task :pushsite => [:rdoc] do
|
43
55
|
task :pushsite do
|
44
56
|
sh "chmod 755 site"
|
45
|
-
sh "chmod
|
46
|
-
sh "chmod
|
57
|
+
sh "find site -type d | xargs chmod go+rx"
|
58
|
+
sh "find site -type f | xargs chmod go+r"
|
47
59
|
sh 'rsync --rsh="ssh -i $HOME/.ssh/id_rsa_oss -l sck" -avz site/ sck@localmemcache.rubyforge.org:/var/www/gforge-projects/localmemcache/'
|
48
60
|
end
|
49
61
|
|
@@ -62,19 +74,22 @@ else
|
|
62
74
|
s.name = "localmemcache"
|
63
75
|
s.version = version
|
64
76
|
s.platform = Gem::Platform::RUBY
|
65
|
-
s.summary = "
|
66
|
-
"Blazingly fast"
|
77
|
+
s.summary = "A persistent key-value database based on mmap()'ed shared memory."
|
67
78
|
|
68
79
|
s.description = <<-EOF
|
69
80
|
|
70
|
-
Localmemcache
|
71
|
-
|
81
|
+
Localmemcache is a library for C and ruby that aims to provide
|
82
|
+
an interface similar to memcached but for accessing local data instead of
|
83
|
+
remote data. It's based on mmap()'ed shared memory for maximum speed.
|
84
|
+
Since version 0.3.0 it supports persistence, also making it a fast
|
85
|
+
alternative to GDBM and Berkeley DB.
|
86
|
+
|
72
87
|
EOF
|
73
88
|
|
74
89
|
s.files = manifest
|
75
90
|
s.extensions = ['configure', 'src/ruby-binding/extconf.rb']
|
76
91
|
s.require_path = 'src/ruby-binding'
|
77
|
-
s.has_rdoc =
|
92
|
+
s.has_rdoc = true
|
78
93
|
s.test_files = Dir['src/test/*.rb']
|
79
94
|
|
80
95
|
s.author = 'Sven C. Koehler'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/bench/common.rb
ADDED
data/bench/gdbm_vs_lmc
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$DIR=File.dirname(__FILE__)
|
2
|
+
['.', '../src/ruby-binding/'].each {|p| $:.unshift File.join($DIR, p) }
|
3
|
+
|
4
|
+
require 'common.rb'
|
5
|
+
|
6
|
+
def __test(n)
|
7
|
+
require 'localmemcache'
|
8
|
+
puts "LocalMemCache"
|
9
|
+
LocalMemCache.clear :filename => "/tmp/fruitstore.lmc"
|
10
|
+
$lm2 = LocalMemCache.new :filename=>"/tmp/fruitstore.lmc"
|
11
|
+
measure_time(n) {
|
12
|
+
r = rand(10000).to_s
|
13
|
+
$lm2.set(r, r)
|
14
|
+
$lm2.get(r)
|
15
|
+
}
|
16
|
+
|
17
|
+
require 'gdbm'
|
18
|
+
puts "GDBM"
|
19
|
+
h = GDBM.new("/tmp/fruitstore.db")
|
20
|
+
measure_time(n) {
|
21
|
+
r = rand(10000).to_s
|
22
|
+
h[r] = r
|
23
|
+
h[r]
|
24
|
+
}
|
25
|
+
h.close
|
26
|
+
end
|
27
|
+
|
28
|
+
__test(2_000_000)
|
29
|
+
|
data/bench/lmc_bench
ADDED
data/bench/lmc_bench.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$DIR=File.dirname(__FILE__)
|
2
|
+
['.', '../src/ruby-binding/'].each {|p| $:.unshift File.join($DIR, p) }
|
3
|
+
|
4
|
+
require 'localmemcache'
|
5
|
+
require 'common.rb'
|
6
|
+
|
7
|
+
LocalMemCache.clear_namespace("speed-comparison");
|
8
|
+
$lm2 = LocalMemCache.new :namespace=>"speed-comparison"
|
9
|
+
|
10
|
+
def compare_speed(n)
|
11
|
+
puts "LocalMemCache"
|
12
|
+
measure_time(n) {
|
13
|
+
r = rand(10000).to_s
|
14
|
+
$lm2.set(r, r)
|
15
|
+
$lm2.get(r)
|
16
|
+
}
|
17
|
+
|
18
|
+
puts "Ruby Hash with strings"
|
19
|
+
$hh = {}
|
20
|
+
measure_time(n) {
|
21
|
+
r = rand(10000).to_s
|
22
|
+
$hh[r] = r
|
23
|
+
$hh[r]
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
compare_speed(2_000_000)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
$DIR=File.dirname(__FILE__)
|
2
|
+
['.'].each {|p| $:.unshift File.join($DIR, p) }
|
3
|
+
|
4
|
+
require 'memcache'
|
5
|
+
require 'common.rb'
|
6
|
+
|
7
|
+
def __test(n)
|
8
|
+
memcache_ips = ['localhost:11211']
|
9
|
+
$cache = MemCache.new memcache_ips,
|
10
|
+
:namespace => 'rtn_',
|
11
|
+
:multithreaded => true
|
12
|
+
measure_time(n) {
|
13
|
+
r = rand(10000).to_s
|
14
|
+
$cache[r] = r
|
15
|
+
$cache[r]
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
__test(2_000_000)
|
data/bench/tyrant_bench
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$DIR=File.dirname(__FILE__)
|
2
|
+
['.'].each {|p| $:.unshift File.join($DIR, p) }
|
3
|
+
|
4
|
+
require 'memcache'
|
5
|
+
require './common.rb'
|
6
|
+
|
7
|
+
def __test(n)
|
8
|
+
memcache_ips = ['localhost:2001']
|
9
|
+
$cache = MemCache.new memcache_ips,
|
10
|
+
:namespace => 'rtn_',
|
11
|
+
:multithreaded => true
|
12
|
+
measure_time(n) {
|
13
|
+
r = rand(10000).to_s
|
14
|
+
$cache[r] = r
|
15
|
+
$cache[r]
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
__test(2_000_000)
|
data/example/hello.c
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
int main() {
|
5
5
|
lmc_error_t e;
|
6
|
-
local_memcache_t *lmc = local_memcache_create("viewcounters", 0, &e);
|
6
|
+
local_memcache_t *lmc = local_memcache_create("viewcounters", 0, 0, &e);
|
7
7
|
if (!lmc) {
|
8
8
|
fprintf(stderr, "Couldn't create localmemcache: %s\n", e.error_str);
|
9
9
|
return 1;
|
@@ -0,0 +1,113 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
|
+
<head>
|
8
|
+
<title>Class: LocalMemCache::ArgError</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
|
+
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
|
15
|
+
function popupCode( url ) {
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
17
|
+
}
|
18
|
+
|
19
|
+
function toggleCode( id ) {
|
20
|
+
if ( document.getElementById )
|
21
|
+
elem = document.getElementById( id );
|
22
|
+
else if ( document.all )
|
23
|
+
elem = eval( "document.all." + id );
|
24
|
+
else
|
25
|
+
return false;
|
26
|
+
|
27
|
+
elemStyle = elem.style;
|
28
|
+
|
29
|
+
if ( elemStyle.display != "block" ) {
|
30
|
+
elemStyle.display = "block"
|
31
|
+
} else {
|
32
|
+
elemStyle.display = "none"
|
33
|
+
}
|
34
|
+
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
|
38
|
+
// Make codeblocks hidden by default
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
40
|
+
|
41
|
+
// ]]>
|
42
|
+
</script>
|
43
|
+
|
44
|
+
</head>
|
45
|
+
<body>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
<div id="classHeader">
|
50
|
+
<table class="header-table">
|
51
|
+
<tr class="top-aligned-row">
|
52
|
+
<td><strong>Class</strong></td>
|
53
|
+
<td class="class-name-in-header">LocalMemCache::ArgError</td>
|
54
|
+
</tr>
|
55
|
+
<tr class="top-aligned-row">
|
56
|
+
<td><strong>In:</strong></td>
|
57
|
+
<td>
|
58
|
+
<a href="../../files/__/src/ruby-binding/localmemcache_rb.html">
|
59
|
+
../src/ruby-binding/localmemcache.rb
|
60
|
+
</a>
|
61
|
+
<br />
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
|
65
|
+
<tr class="top-aligned-row">
|
66
|
+
<td><strong>Parent:</strong></td>
|
67
|
+
<td>
|
68
|
+
<a href="LocalMemCacheError.html">
|
69
|
+
LocalMemCacheError
|
70
|
+
</a>
|
71
|
+
</td>
|
72
|
+
</tr>
|
73
|
+
</table>
|
74
|
+
</div>
|
75
|
+
<!-- banner header -->
|
76
|
+
|
77
|
+
<div id="bodyContent">
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
<div id="contextContent">
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
</div>
|
86
|
+
|
87
|
+
|
88
|
+
</div>
|
89
|
+
|
90
|
+
|
91
|
+
<!-- if includes -->
|
92
|
+
|
93
|
+
<div id="section">
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
<!-- if method_list -->
|
103
|
+
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
|
108
|
+
<div id="validator-badges">
|
109
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
110
|
+
</div>
|
111
|
+
|
112
|
+
</body>
|
113
|
+
</html>
|
@@ -0,0 +1,113 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
|
+
<head>
|
8
|
+
<title>Class: LocalMemCache::InitError</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
|
+
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
|
15
|
+
function popupCode( url ) {
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
17
|
+
}
|
18
|
+
|
19
|
+
function toggleCode( id ) {
|
20
|
+
if ( document.getElementById )
|
21
|
+
elem = document.getElementById( id );
|
22
|
+
else if ( document.all )
|
23
|
+
elem = eval( "document.all." + id );
|
24
|
+
else
|
25
|
+
return false;
|
26
|
+
|
27
|
+
elemStyle = elem.style;
|
28
|
+
|
29
|
+
if ( elemStyle.display != "block" ) {
|
30
|
+
elemStyle.display = "block"
|
31
|
+
} else {
|
32
|
+
elemStyle.display = "none"
|
33
|
+
}
|
34
|
+
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
|
38
|
+
// Make codeblocks hidden by default
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
40
|
+
|
41
|
+
// ]]>
|
42
|
+
</script>
|
43
|
+
|
44
|
+
</head>
|
45
|
+
<body>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
<div id="classHeader">
|
50
|
+
<table class="header-table">
|
51
|
+
<tr class="top-aligned-row">
|
52
|
+
<td><strong>Class</strong></td>
|
53
|
+
<td class="class-name-in-header">LocalMemCache::InitError</td>
|
54
|
+
</tr>
|
55
|
+
<tr class="top-aligned-row">
|
56
|
+
<td><strong>In:</strong></td>
|
57
|
+
<td>
|
58
|
+
<a href="../../files/__/src/ruby-binding/localmemcache_rb.html">
|
59
|
+
../src/ruby-binding/localmemcache.rb
|
60
|
+
</a>
|
61
|
+
<br />
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
|
65
|
+
<tr class="top-aligned-row">
|
66
|
+
<td><strong>Parent:</strong></td>
|
67
|
+
<td>
|
68
|
+
<a href="LocalMemCacheError.html">
|
69
|
+
LocalMemCacheError
|
70
|
+
</a>
|
71
|
+
</td>
|
72
|
+
</tr>
|
73
|
+
</table>
|
74
|
+
</div>
|
75
|
+
<!-- banner header -->
|
76
|
+
|
77
|
+
<div id="bodyContent">
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
<div id="contextContent">
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
</div>
|
86
|
+
|
87
|
+
|
88
|
+
</div>
|
89
|
+
|
90
|
+
|
91
|
+
<!-- if includes -->
|
92
|
+
|
93
|
+
<div id="section">
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
<!-- if method_list -->
|
103
|
+
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
|
108
|
+
<div id="validator-badges">
|
109
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
110
|
+
</div>
|
111
|
+
|
112
|
+
</body>
|
113
|
+
</html>
|
@@ -0,0 +1,111 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
|
+
<head>
|
8
|
+
<title>Class: LocalMemCache::LocalMemCacheError</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
|
+
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
|
15
|
+
function popupCode( url ) {
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
17
|
+
}
|
18
|
+
|
19
|
+
function toggleCode( id ) {
|
20
|
+
if ( document.getElementById )
|
21
|
+
elem = document.getElementById( id );
|
22
|
+
else if ( document.all )
|
23
|
+
elem = eval( "document.all." + id );
|
24
|
+
else
|
25
|
+
return false;
|
26
|
+
|
27
|
+
elemStyle = elem.style;
|
28
|
+
|
29
|
+
if ( elemStyle.display != "block" ) {
|
30
|
+
elemStyle.display = "block"
|
31
|
+
} else {
|
32
|
+
elemStyle.display = "none"
|
33
|
+
}
|
34
|
+
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
|
38
|
+
// Make codeblocks hidden by default
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
40
|
+
|
41
|
+
// ]]>
|
42
|
+
</script>
|
43
|
+
|
44
|
+
</head>
|
45
|
+
<body>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
<div id="classHeader">
|
50
|
+
<table class="header-table">
|
51
|
+
<tr class="top-aligned-row">
|
52
|
+
<td><strong>Class</strong></td>
|
53
|
+
<td class="class-name-in-header">LocalMemCache::LocalMemCacheError</td>
|
54
|
+
</tr>
|
55
|
+
<tr class="top-aligned-row">
|
56
|
+
<td><strong>In:</strong></td>
|
57
|
+
<td>
|
58
|
+
<a href="../../files/__/src/ruby-binding/localmemcache_rb.html">
|
59
|
+
../src/ruby-binding/localmemcache.rb
|
60
|
+
</a>
|
61
|
+
<br />
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
|
65
|
+
<tr class="top-aligned-row">
|
66
|
+
<td><strong>Parent:</strong></td>
|
67
|
+
<td>
|
68
|
+
StandardError
|
69
|
+
</td>
|
70
|
+
</tr>
|
71
|
+
</table>
|
72
|
+
</div>
|
73
|
+
<!-- banner header -->
|
74
|
+
|
75
|
+
<div id="bodyContent">
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
<div id="contextContent">
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
</div>
|
84
|
+
|
85
|
+
|
86
|
+
</div>
|
87
|
+
|
88
|
+
|
89
|
+
<!-- if includes -->
|
90
|
+
|
91
|
+
<div id="section">
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
<!-- if method_list -->
|
101
|
+
|
102
|
+
|
103
|
+
</div>
|
104
|
+
|
105
|
+
|
106
|
+
<div id="validator-badges">
|
107
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
108
|
+
</div>
|
109
|
+
|
110
|
+
</body>
|
111
|
+
</html>
|