sbsm 1.3.4 → 1.3.5
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.
- checksums.yaml +4 -4
- data/History.txt +5 -0
- data/lib/sbsm/app.rb +39 -34
- data/lib/sbsm/cgi.rb +0 -1
- data/lib/sbsm/session.rb +85 -75
- data/lib/sbsm/session_store.rb +179 -0
- data/lib/sbsm/state.rb +1 -0
- data/lib/sbsm/validator.rb +4 -3
- data/lib/sbsm/version.rb +1 -1
- data/lib/sbsm/viralstate.rb +1 -1
- data/test/config.ru +11 -0
- data/test/simple_sbsm.rb +17 -15
- data/test/test_application.rb +55 -44
- data/test/test_customized_app.rb +232 -0
- data/test/test_logger.rb +0 -0
- data/test/test_session.rb +94 -61
- data/test/wrk_visit.lua +12 -0
- metadata +9 -7
- data/lib/cgi/drbsession.rb +0 -39
- data/lib/sbsm/drb.rb +0 -22
- data/lib/sbsm/drbserver.rb +0 -167
- data/test/test_drbserver.rb +0 -84
data/test/test_logger.rb
CHANGED
|
File without changes
|
data/test/test_session.rb
CHANGED
|
@@ -28,23 +28,37 @@
|
|
|
28
28
|
require 'minitest/autorun'
|
|
29
29
|
require 'sbsm/session'
|
|
30
30
|
require 'sbsm/validator'
|
|
31
|
+
require 'sbsm/trans_handler'
|
|
32
|
+
require 'sbsm/app'
|
|
31
33
|
require 'rack'
|
|
32
34
|
require 'rack/test'
|
|
33
35
|
|
|
36
|
+
begin
|
|
37
|
+
require 'pry'
|
|
38
|
+
rescue LoadError
|
|
39
|
+
end
|
|
40
|
+
|
|
34
41
|
class StubSessionUnknownUser
|
|
35
42
|
end
|
|
36
|
-
class
|
|
37
|
-
def unknown_user
|
|
38
|
-
StubSessionUnknownUser.new
|
|
39
|
-
end
|
|
40
|
-
def login(session)
|
|
41
|
-
false
|
|
42
|
-
end
|
|
43
|
-
def async(&block)
|
|
44
|
-
block.call
|
|
45
|
-
end
|
|
43
|
+
class StubSessionSession < SBSM::Session
|
|
46
44
|
end
|
|
47
|
-
class
|
|
45
|
+
class StubSessionApp < SBSM::App
|
|
46
|
+
attr_accessor :trans_handler, :validator
|
|
47
|
+
SESSION = StubSessionSession
|
|
48
|
+
def initialize(args = {})
|
|
49
|
+
args[:session_class] ||= StubSessionSession
|
|
50
|
+
args[:validator] ||= StubSessionValidator.new
|
|
51
|
+
args[:unknown_user] ||= StubSessionUnknownUser.new
|
|
52
|
+
super(args)
|
|
53
|
+
end
|
|
54
|
+
def login(session)
|
|
55
|
+
false
|
|
56
|
+
end
|
|
57
|
+
def async(&block)
|
|
58
|
+
block.call
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
class StubSessionValidator < SBSM::Validator
|
|
48
62
|
def reset_errors; end
|
|
49
63
|
def validate(key, value, mandatory=false)
|
|
50
64
|
value
|
|
@@ -64,13 +78,11 @@ class StubSessionRequest < Rack::Request
|
|
|
64
78
|
end
|
|
65
79
|
end
|
|
66
80
|
class StubSessionView
|
|
67
|
-
def http_headers
|
|
68
|
-
{
|
|
69
|
-
"foo" => "bar"
|
|
70
|
-
}
|
|
71
|
-
end
|
|
72
81
|
def initialize(foo, bar)
|
|
73
82
|
end
|
|
83
|
+
def http_headers
|
|
84
|
+
{ "foo" => "bar" }
|
|
85
|
+
end
|
|
74
86
|
def to_html(context)
|
|
75
87
|
'0123456789' * 3
|
|
76
88
|
end
|
|
@@ -98,9 +110,8 @@ end
|
|
|
98
110
|
class StubVolatileState < SBSM::State
|
|
99
111
|
VOLATILE = true
|
|
100
112
|
end
|
|
101
|
-
class
|
|
113
|
+
class StubSessionWithView < SBSM::Session
|
|
102
114
|
DEFAULT_STATE = StubSessionState
|
|
103
|
-
DRB_LOAD_LIMIT = 10
|
|
104
115
|
CAP_MAX_THRESHOLD = 3
|
|
105
116
|
MAX_STATES = 3
|
|
106
117
|
DEFAULT_FLAVOR = 'gcc'
|
|
@@ -109,17 +120,26 @@ class Session < SBSM::Session
|
|
|
109
120
|
attr_writer :lookandfeel, :persistent_user_input
|
|
110
121
|
attr_writer :active_state
|
|
111
122
|
public :active_state
|
|
123
|
+
def initialize(args)
|
|
124
|
+
args[:app] ||= StubSessionApp.new
|
|
125
|
+
args[:validator] ||= StubSessionValidator.new
|
|
126
|
+
super(args)
|
|
127
|
+
persistent_user_input = {}
|
|
128
|
+
end
|
|
112
129
|
end
|
|
113
130
|
class StubSessionSession < SBSM::Session
|
|
114
131
|
attr_accessor :lookandfeel
|
|
115
|
-
|
|
132
|
+
attr_accessor :persistent_user_input
|
|
116
133
|
DEFAULT_FLAVOR = 'gcc'
|
|
117
134
|
LF_FACTORY = {
|
|
118
135
|
'gcc' => 'ccg',
|
|
119
136
|
'sbb' => 'bbs',
|
|
120
137
|
}
|
|
121
|
-
def initialize(
|
|
122
|
-
|
|
138
|
+
def initialize(app: app)
|
|
139
|
+
args = { :app => app}
|
|
140
|
+
args[:app] ||= StubSessionApp.new
|
|
141
|
+
args[:validator] ||= StubSessionValidator.new
|
|
142
|
+
super(args)
|
|
123
143
|
persistent_user_input = {}
|
|
124
144
|
end
|
|
125
145
|
def persistent_user_input(key)
|
|
@@ -130,16 +150,47 @@ end
|
|
|
130
150
|
class TestSession < Minitest::Test
|
|
131
151
|
include Rack::Test::Methods
|
|
132
152
|
def setup
|
|
133
|
-
|
|
153
|
+
@app = StubSessionApp.new(validator: StubSessionValidator.new,
|
|
154
|
+
unknown_user: StubSessionUnknownUser.new)
|
|
155
|
+
@session = StubSessionWithView.new(app: @app,
|
|
156
|
+
validator: StubSessionValidator.new,
|
|
157
|
+
unknown_user: StubSessionUnknownUser.new)
|
|
134
158
|
@request = StubSessionRequest.new
|
|
135
159
|
@state = StubSessionState.new(@session, nil)
|
|
136
160
|
end
|
|
161
|
+
if true
|
|
162
|
+
def test_user_input
|
|
163
|
+
@request["foo"] = "bar"
|
|
164
|
+
@request["baz"] = "zuv"
|
|
165
|
+
# next line checks whether we did setup correctly the session
|
|
166
|
+
assert_equal(@session.validator.class, StubSessionValidator)
|
|
167
|
+
@session.process_rack(rack_request: @request)
|
|
168
|
+
assert_equal(['foo', 'bar'], @session.valid_values('foo'))
|
|
169
|
+
assert_equal("zuv", @session.user_input(:baz))
|
|
170
|
+
assert_equal("zuv", @session.user_input(:baz))
|
|
171
|
+
result = @session.user_input(:foo, :baz)
|
|
172
|
+
expected = {
|
|
173
|
+
:foo => 'bar',
|
|
174
|
+
:baz => 'zuv',
|
|
175
|
+
}
|
|
176
|
+
assert_equal(expected, result)
|
|
177
|
+
end
|
|
178
|
+
def test_persistent_user_input
|
|
179
|
+
@request["baz"] = "zuv"
|
|
180
|
+
@session.process_rack(rack_request: @request)
|
|
181
|
+
assert_equal("zuv", @session.persistent_user_input(:baz))
|
|
182
|
+
@session.process_rack(StubSessionRequest.new)
|
|
183
|
+
assert_equal("zuv", @session.persistent_user_input(:baz))
|
|
184
|
+
@request["baz"] = "bla"
|
|
185
|
+
@session.process_rack(rack_request: @request)
|
|
186
|
+
assert_equal("bla", @session.persistent_user_input(:baz))
|
|
187
|
+
end
|
|
137
188
|
def test_user_input_hash
|
|
138
189
|
@request["hash[1]"] = "4"
|
|
139
190
|
@request["hash[2]"] = "5"
|
|
140
191
|
@request.params["hash[3]"] = "6"
|
|
141
192
|
@request.params['real_hash'] = {'1' => 'a', '2' => 'b'}
|
|
142
|
-
@session.
|
|
193
|
+
@session.process_rack(rack_request: @request)
|
|
143
194
|
hash = @session.user_input(:hash)
|
|
144
195
|
assert_equal(Hash, hash.class)
|
|
145
196
|
assert_equal(3, hash.size)
|
|
@@ -152,7 +203,7 @@ class TestSession < Minitest::Test
|
|
|
152
203
|
assert_equal("b", real_hash['2'])
|
|
153
204
|
end
|
|
154
205
|
def test_attended_states_store
|
|
155
|
-
@session.
|
|
206
|
+
@session.process_rack(rack_request: @request)
|
|
156
207
|
state = @session.state
|
|
157
208
|
expected = {
|
|
158
209
|
state.object_id => state
|
|
@@ -163,16 +214,16 @@ class TestSession < Minitest::Test
|
|
|
163
214
|
end
|
|
164
215
|
def test_attended_states_cap_max
|
|
165
216
|
req1 = StubSessionRequest.new
|
|
166
|
-
@session.
|
|
217
|
+
@session.process_rack(:rack_request =>req1)
|
|
167
218
|
state1 = @session.state
|
|
168
219
|
req2 = StubSessionRequest.new
|
|
169
220
|
req2["event"] = "foo"
|
|
170
|
-
@session.
|
|
221
|
+
@session.process_rack(:rack_request =>req2)
|
|
171
222
|
state2 = @session.state
|
|
172
223
|
refute_equal(state1, state2)
|
|
173
224
|
req3 = StubSessionRequest.new
|
|
174
225
|
req3["event"] = :bar
|
|
175
|
-
@session.
|
|
226
|
+
@session.process_rack(:rack_request =>req3)
|
|
176
227
|
state3 = @session.state
|
|
177
228
|
refute_equal(state1, state3)
|
|
178
229
|
refute_equal(state2, state3)
|
|
@@ -184,7 +235,7 @@ class TestSession < Minitest::Test
|
|
|
184
235
|
assert_equal(attended, @session.attended_states)
|
|
185
236
|
req4 = StubSessionRequest.new
|
|
186
237
|
req4["event"] = :foobar
|
|
187
|
-
@session.
|
|
238
|
+
@session.process_rack(:rack_request =>req4)
|
|
188
239
|
@session.cap_max_states
|
|
189
240
|
state4 = @session.state
|
|
190
241
|
refute_equal(state1, state4)
|
|
@@ -222,7 +273,7 @@ class TestSession < Minitest::Test
|
|
|
222
273
|
}
|
|
223
274
|
@session.active_state = @state
|
|
224
275
|
# @request.params.store('state_id', state.object_id.next)
|
|
225
|
-
@session.
|
|
276
|
+
@session.process_rack(rack_request: @request)
|
|
226
277
|
assert_equal(@state, @session.active_state)
|
|
227
278
|
end
|
|
228
279
|
def test_active_state3
|
|
@@ -237,8 +288,8 @@ class TestSession < Minitest::Test
|
|
|
237
288
|
}
|
|
238
289
|
@session.state = @state
|
|
239
290
|
@request.params.store('state_id', state.object_id)
|
|
240
|
-
@session.
|
|
241
|
-
assert_equal(state, @session.active_state)
|
|
291
|
+
@session.process_rack(rack_request: @request)
|
|
292
|
+
assert_equal(state.class, @session.active_state.class)
|
|
242
293
|
end
|
|
243
294
|
def test_volatile_state
|
|
244
295
|
state = StubSessionState.new(@session, nil)
|
|
@@ -247,12 +298,12 @@ class TestSession < Minitest::Test
|
|
|
247
298
|
@session.active_state = state
|
|
248
299
|
@session.state = state
|
|
249
300
|
@request.params.store('event', :volatile)
|
|
250
|
-
newstate = @session.
|
|
301
|
+
newstate = @session.process_rack(rack_request: @request)
|
|
251
302
|
assert_equal(:volatile, @session.event)
|
|
252
303
|
assert_equal(volatile, @session.state)
|
|
253
304
|
assert_equal(state, @session.active_state)
|
|
254
305
|
@request.params.store('event', :foo)
|
|
255
|
-
newstate = @session.
|
|
306
|
+
newstate = @session.process_rack(rack_request: @request)
|
|
256
307
|
assert_equal(state.foo, @session.state)
|
|
257
308
|
assert_equal(state.foo, @session.active_state)
|
|
258
309
|
end
|
|
@@ -263,19 +314,19 @@ class TestSession < Minitest::Test
|
|
|
263
314
|
assert_respond_to(@session, :delete)
|
|
264
315
|
end
|
|
265
316
|
def test_restore
|
|
266
|
-
assert_instance_of(
|
|
317
|
+
assert_instance_of(NilClass, @session.restore[:proxy])
|
|
267
318
|
end
|
|
268
319
|
def test_user_input_no_request
|
|
269
320
|
assert_nil(@session.user_input(:no_input))
|
|
270
321
|
end
|
|
271
322
|
def test_user_input_nil
|
|
272
|
-
@session.
|
|
323
|
+
@session.process_rack(rack_request: @request)
|
|
273
324
|
assert_nil(@session.user_input(:no_input))
|
|
274
325
|
end
|
|
275
326
|
def test_user_input
|
|
276
327
|
@request["foo"] = "bar"
|
|
277
328
|
@request["baz"] = "zuv"
|
|
278
|
-
@session.
|
|
329
|
+
@session.process_rack(rack_request: @request)
|
|
279
330
|
assert_equal("bar", @session.user_input(:foo))
|
|
280
331
|
assert_equal("zuv", @session.user_input(:baz))
|
|
281
332
|
assert_equal("zuv", @session.user_input(:baz))
|
|
@@ -290,7 +341,7 @@ class TestSession < Minitest::Test
|
|
|
290
341
|
@request["hash[1]"] = "4"
|
|
291
342
|
@request["hash[2]"] = "5"
|
|
292
343
|
@request["hash[3]"] = "6"
|
|
293
|
-
@session.
|
|
344
|
+
@session.process_rack(rack_request: @request)
|
|
294
345
|
hash = @session.user_input(:hash)
|
|
295
346
|
assert_equal(Hash, hash.class)
|
|
296
347
|
assert_equal(3, hash.size)
|
|
@@ -298,12 +349,6 @@ class TestSession < Minitest::Test
|
|
|
298
349
|
assert_equal("5", hash["2"])
|
|
299
350
|
assert_equal("6", hash["3"])
|
|
300
351
|
end
|
|
301
|
-
def test_http_headers
|
|
302
|
-
expected = {
|
|
303
|
-
"foo" => "bar"
|
|
304
|
-
}
|
|
305
|
-
assert_equal(expected, @session.http_headers)
|
|
306
|
-
end
|
|
307
352
|
def test_http_protocol
|
|
308
353
|
assert_equal("http", @session.http_protocol)
|
|
309
354
|
end
|
|
@@ -321,27 +366,14 @@ class TestSession < Minitest::Test
|
|
|
321
366
|
end
|
|
322
367
|
def test_persistent_user_input
|
|
323
368
|
@request["baz"] = "zuv"
|
|
324
|
-
@session.
|
|
369
|
+
@session.process_rack(rack_request: @request)
|
|
325
370
|
assert_equal("zuv", @session.persistent_user_input(:baz))
|
|
326
|
-
@session.
|
|
371
|
+
@session.process_rack(rack_request: StubSessionRequest.new)
|
|
327
372
|
assert_equal("zuv", @session.persistent_user_input(:baz))
|
|
328
373
|
@request["baz"] = "bla"
|
|
329
|
-
@session.
|
|
374
|
+
@session.process_rack(rack_request: @request)
|
|
330
375
|
assert_equal("bla", @session.persistent_user_input(:baz))
|
|
331
376
|
end
|
|
332
|
-
def test_process
|
|
333
|
-
state = StubSessionState.new(@session, nil)
|
|
334
|
-
@session.attended_states = {
|
|
335
|
-
state.object_id => state,
|
|
336
|
-
}
|
|
337
|
-
@session.state = @state
|
|
338
|
-
expected = state.foo
|
|
339
|
-
@request.params.store('state_id', state.object_id)
|
|
340
|
-
@request.params.store('event', :foo)
|
|
341
|
-
@session.process(@request)
|
|
342
|
-
assert_equal(expected, @session.state)
|
|
343
|
-
assert_equal(expected, @session.attended_states[expected.object_id])
|
|
344
|
-
end
|
|
345
377
|
def test_logout
|
|
346
378
|
state = StubSessionBarState.new(@session, nil)
|
|
347
379
|
@session.attended_states.store(state.object_id, state)
|
|
@@ -370,7 +402,7 @@ class TestSession < Minitest::Test
|
|
|
370
402
|
assert_equal('en', lnf3.language) ## flavor does not change!
|
|
371
403
|
end
|
|
372
404
|
def test_lookandfeel2
|
|
373
|
-
session = StubSessionSession.new(
|
|
405
|
+
session = StubSessionSession.new(app: StubSessionApp.new)
|
|
374
406
|
session.lookandfeel=nil
|
|
375
407
|
session.persistent_user_input = {
|
|
376
408
|
:flavor => 'gcc',
|
|
@@ -379,7 +411,7 @@ class TestSession < Minitest::Test
|
|
|
379
411
|
assert_equal('gcc', session.flavor)
|
|
380
412
|
end
|
|
381
413
|
def test_lookandfeel3
|
|
382
|
-
session = StubSessionSession.new(
|
|
414
|
+
session = StubSessionSession.new(app: StubSessionApp.new)
|
|
383
415
|
session.lookandfeel=nil
|
|
384
416
|
lnf2 = session.lookandfeel
|
|
385
417
|
session.persistent_user_input = {
|
|
@@ -388,3 +420,4 @@ class TestSession < Minitest::Test
|
|
|
388
420
|
assert_equal('gcc', session.flavor)
|
|
389
421
|
end
|
|
390
422
|
end
|
|
423
|
+
end
|
data/test/wrk_visit.lua
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/lua
|
|
2
|
+
-------------------------------------------------------------
|
|
3
|
+
-- NOTE: each wrk thread has an independent Lua scripting
|
|
4
|
+
-- context and thus there will be one counter per thread
|
|
5
|
+
|
|
6
|
+
counter = 0
|
|
7
|
+
paths_to_visit = {"/de/page/feedback", "/de/page/about", "/"}
|
|
8
|
+
request = function()
|
|
9
|
+
counter = counter + 1
|
|
10
|
+
return wrk.format(nil, paths_to_visit[(counter % table.getn(paths_to_visit))+ 1])
|
|
11
|
+
end
|
|
12
|
+
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sbsm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3.
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Masaomi Hatakeyama, Zeno R.R. Davatz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-12-
|
|
11
|
+
date: 2016-12-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rack
|
|
@@ -269,12 +269,9 @@ files:
|
|
|
269
269
|
- data/uri.grammar
|
|
270
270
|
- data/zone_uri.grammar
|
|
271
271
|
- install.rb
|
|
272
|
-
- lib/cgi/drbsession.rb
|
|
273
272
|
- lib/sbsm.rb
|
|
274
273
|
- lib/sbsm/app.rb
|
|
275
274
|
- lib/sbsm/cgi.rb
|
|
276
|
-
- lib/sbsm/drb.rb
|
|
277
|
-
- lib/sbsm/drbserver.rb
|
|
278
275
|
- lib/sbsm/exception.rb
|
|
279
276
|
- lib/sbsm/index.rb
|
|
280
277
|
- lib/sbsm/logger.rb
|
|
@@ -283,6 +280,7 @@ files:
|
|
|
283
280
|
- lib/sbsm/lookandfeelwrapper.rb
|
|
284
281
|
- lib/sbsm/redirector.rb
|
|
285
282
|
- lib/sbsm/session.rb
|
|
283
|
+
- lib/sbsm/session_store.rb
|
|
286
284
|
- lib/sbsm/state.rb
|
|
287
285
|
- lib/sbsm/time.rb
|
|
288
286
|
- lib/sbsm/trans_handler.rb
|
|
@@ -292,6 +290,7 @@ files:
|
|
|
292
290
|
- lib/sbsm/version.rb
|
|
293
291
|
- lib/sbsm/viralstate.rb
|
|
294
292
|
- sbsm.gemspec
|
|
293
|
+
- test/config.ru
|
|
295
294
|
- test/data/dos_file.txt
|
|
296
295
|
- test/data/lnf_file.txt
|
|
297
296
|
- test/data/mac_file.txt
|
|
@@ -299,7 +298,7 @@ files:
|
|
|
299
298
|
- test/stub/cgi.rb
|
|
300
299
|
- test/suite.rb
|
|
301
300
|
- test/test_application.rb
|
|
302
|
-
- test/
|
|
301
|
+
- test/test_customized_app.rb
|
|
303
302
|
- test/test_index.rb
|
|
304
303
|
- test/test_logger.rb
|
|
305
304
|
- test/test_lookandfeel.rb
|
|
@@ -308,6 +307,7 @@ files:
|
|
|
308
307
|
- test/test_trans_handler.rb
|
|
309
308
|
- test/test_user.rb
|
|
310
309
|
- test/test_validator.rb
|
|
310
|
+
- test/wrk_visit.lua
|
|
311
311
|
- usage-en.txt
|
|
312
312
|
homepage: https://github.com/zdavatz/sbsm
|
|
313
313
|
licenses:
|
|
@@ -334,6 +334,7 @@ signing_key:
|
|
|
334
334
|
specification_version: 4
|
|
335
335
|
summary: Application framework for state based session management from ywesee
|
|
336
336
|
test_files:
|
|
337
|
+
- test/config.ru
|
|
337
338
|
- test/data/dos_file.txt
|
|
338
339
|
- test/data/lnf_file.txt
|
|
339
340
|
- test/data/mac_file.txt
|
|
@@ -341,7 +342,7 @@ test_files:
|
|
|
341
342
|
- test/stub/cgi.rb
|
|
342
343
|
- test/suite.rb
|
|
343
344
|
- test/test_application.rb
|
|
344
|
-
- test/
|
|
345
|
+
- test/test_customized_app.rb
|
|
345
346
|
- test/test_index.rb
|
|
346
347
|
- test/test_logger.rb
|
|
347
348
|
- test/test_lookandfeel.rb
|
|
@@ -350,3 +351,4 @@ test_files:
|
|
|
350
351
|
- test/test_trans_handler.rb
|
|
351
352
|
- test/test_user.rb
|
|
352
353
|
- test/test_validator.rb
|
|
354
|
+
- test/wrk_visit.lua
|
data/lib/cgi/drbsession.rb
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#--
|
|
3
|
-
# DRbSession - CGI::Session session database manager using DRb.
|
|
4
|
-
# Copyright (C) 2001 by Tietew. All Rights Reserved.
|
|
5
|
-
#++
|
|
6
|
-
require 'drb/drb'
|
|
7
|
-
require 'sbsm/logger'
|
|
8
|
-
class CGI
|
|
9
|
-
class Session
|
|
10
|
-
class DRbSession
|
|
11
|
-
attr_reader :obj
|
|
12
|
-
def initialize(session, option={})
|
|
13
|
-
unless uri = option['drbsession_uri']
|
|
14
|
-
raise ArgumentError, "drbsession_uri not specified"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
unless DRb.thread
|
|
18
|
-
DRb.start_service
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
holder = DRbObject.new(nil, uri)
|
|
22
|
-
@obj = holder[session.session_id]
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def restore
|
|
26
|
-
@obj.restore
|
|
27
|
-
end
|
|
28
|
-
def update
|
|
29
|
-
@obj.update
|
|
30
|
-
end
|
|
31
|
-
def close
|
|
32
|
-
@obj.close
|
|
33
|
-
end
|
|
34
|
-
def delete
|
|
35
|
-
@obj.delete
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|