sbsm 1.4.5 → 1.4.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c931f28d24233cb0c46c2f1e6341a8a451037918
4
- data.tar.gz: abfdbcc5d3464f7ae2eeab161eaf02319f70e568
3
+ metadata.gz: 60f4a61bb07708b12676dc908a0de85f373c5b17
4
+ data.tar.gz: 496054938b87a49afb78c8269edc3ec77c1e6a19
5
5
  SHA512:
6
- metadata.gz: c7f94a54e9f0e73fd5ad64747720302448c12717665a94f8c769f041a987b8a86ef1ce9967ef9932f1a758aedfec4d30fea6a3d1bff94cd93b18d378469fc918
7
- data.tar.gz: 57e179ccda3ea1eb5053992b71311f939aee63a72db164d761ff128ac13823d1d1c90140461454974399e00f1ddad4734cfc1533bbc145ea95ab82321a5a7b36
6
+ metadata.gz: 3e048c7a06458e3327852f4a9a9a582fd44a476f8385a491c77352f54da1471de42d59968be3381b583587b097f5b964db12cfc063f50c64aa889a1212c51926
7
+ data.tar.gz: a4eb100131a6255fbe1c8fd0448d27ad061d70f3e33f9b5fbaa957f6b235bdfc984dfe74bd81397d55de8df8b320446c8e174f7aad735dae2cfc83cd778a560c
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 1.4.6 / 21.06.2017
2
+
3
+ * Added SessionStore.clear
4
+ * Added reader unknown_user and session_store
5
+ * Admin server is now multi_threaded by default
6
+
1
7
  === 1.4.5 / 13.06.2017
2
8
 
3
9
  * Fix unknown_user if passing a class and not an instance of it
@@ -37,8 +37,8 @@ require 'sbsm/session_store'
37
37
  module SBSM
38
38
  # AdminClass must be tied to an Rack app
39
39
  class AdminServer
40
- def initialize(app:)
41
- @session = SBSM::SessionStore.new(app: app)
40
+ def initialize(app:, multi_threaded: false)
41
+ @session = SBSM::SessionStore.new(app: app, multi_threaded: multi_threaded)
42
42
  @admin_threads = ThreadGroup.new
43
43
  end
44
44
  def _admin(src, result, priority=0)
data/lib/sbsm/app.rb CHANGED
@@ -35,6 +35,7 @@ module SBSM
35
35
  ###
36
36
  # App as a member of session
37
37
  class App
38
+ attr_reader :unknown_user
38
39
 
39
40
  def initialize()
40
41
  SBSM.info "initialize"
@@ -43,6 +44,7 @@ module SBSM
43
44
 
44
45
  class RackInterface
45
46
  attr_accessor :session # thread variable!
47
+ attr_reader :session_store, :unknown_user
46
48
  SESSION_ID = '_session_id'
47
49
 
48
50
  # Base class for a SBSM based WebRick HTTP server
@@ -84,6 +86,7 @@ module SBSM
84
86
  unknown_user: unknown_user,
85
87
  validator: validator,
86
88
  multi_threaded: multi_threaded)
89
+ @unknown_user = unknown_user
87
90
  end
88
91
 
89
92
  def last_session
@@ -143,7 +146,6 @@ module SBSM
143
146
  response.set_cookie(key, { :value => value, :path => '/' })
144
147
  end
145
148
  response.set_cookie(SESSION_ID, { :value => session_id, :path => '/' }) unless request.cookies[SESSION_ID]
146
-
147
149
  # response.set_cookie(SBSM::Session.get_cookie_name, session_id)
148
150
  @@last_session = session
149
151
  if response.headers['Set-Cookie'].to_s.index(session_id)
data/lib/sbsm/logger.rb CHANGED
File without changes
data/lib/sbsm/session.rb CHANGED
@@ -31,6 +31,7 @@ require 'sbsm/cgi'
31
31
  require 'sbsm/state'
32
32
  require 'sbsm/user'
33
33
  require 'sbsm/lookandfeelfactory'
34
+ require 'sbsm/trans_handler'
34
35
  require 'delegate'
35
36
 
36
37
  module SBSM
@@ -571,16 +572,16 @@ module SBSM
571
572
  # nothing
572
573
  end
573
574
  def delete
574
- @app.delete_session @key
575
+ @app.delete_session(@key)
575
576
  end
576
577
  def zone
577
- @valid_input[:zone] || @state.zone || self::class::DEFAULT_ZONE
578
+ @valid_input[:zone] || (@state && @state.zone) || self::class::DEFAULT_ZONE
578
579
  end
579
580
  def zones
580
581
  @active_state.zones
581
582
  end
582
583
  def zone_navigation
583
- @state.zone_navigation
584
+ @state.zone_navigation if @state
584
585
  end
585
586
  def ==(other)
586
587
  super
@@ -33,6 +33,7 @@ require 'thread'
33
33
  require 'digest/md5'
34
34
  require 'sbsm/logger'
35
35
  require 'sbsm/validator'
36
+ require 'sbsm/session_store'
36
37
 
37
38
  module SBSM
38
39
  #
@@ -49,6 +50,8 @@ module SBSM
49
50
  UNKNOWN_USER = UnknownUser
50
51
  VALIDATOR = nil
51
52
  attr_reader :cleaner, :updater, :persistence_layer
53
+ @@mutex = Mutex.new
54
+ @@sessions = {}
52
55
  def initialize(app:,
53
56
  persistence_layer: nil,
54
57
  trans_handler: nil,
@@ -58,8 +61,6 @@ module SBSM
58
61
  unknown_user: UNKNOWN_USER.new,
59
62
  multi_threaded: nil)
60
63
  fail "You must specify an app!" unless app
61
- @sessions = {}
62
- @mutex = Mutex.new
63
64
  @cleaner = run_cleaner if(self.class.const_get(:RUN_CLEANER))
64
65
  @app = app
65
66
  @system = persistence_layer
@@ -74,13 +75,13 @@ module SBSM
74
75
  @validator = validator
75
76
  end
76
77
  def cap_max_sessions(now = Time.now)
77
- if(@sessions.size > self::class::CAP_MAX_THRESHOLD)
78
+ if(@@sessions.size > self::class::CAP_MAX_THRESHOLD)
78
79
  SBSM.info "too many sessions! Keeping only #{self::class::MAX_SESSIONS}"
79
80
  sess = nil
80
- sorted = @sessions.values.sort
81
+ sorted = @@sessions.values.sort
81
82
  sorted[0...(-self::class::MAX_SESSIONS)].each { |sess|
82
83
  sess.__checkout
83
- @sessions.delete(sess.key)
84
+ @@sessions.delete(sess.key)
84
85
  }
85
86
  if(sess)
86
87
  age = sess.age(now)
@@ -90,7 +91,7 @@ module SBSM
90
91
  end
91
92
  def clean
92
93
  now = Time.now
93
- @sessions.delete_if { |key, s|
94
+ @@sessions.delete_if { |key, s|
94
95
  begin
95
96
  if s.respond_to?(:expired?)
96
97
  if s.expired?(now)
@@ -109,18 +110,20 @@ module SBSM
109
110
  }
110
111
  #cap_max_sessions(now)
111
112
  end
112
- def clear
113
- @sessions.each_value { |sess| sess.__checkout }
114
- @sessions.clear
113
+ def SessionStore.clear
114
+ @@mutex.synchronize do
115
+ @@sessions.each_value { |sess| sess.__checkout }
116
+ @@sessions.clear
117
+ end
115
118
  end
116
119
  def delete_session(key)
117
- if(sess = @sessions.delete(key))
120
+ if(sess = @@sessions.delete(key))
118
121
  sess.__checkout
119
122
  end
120
123
  end
121
124
  def reset
122
- @mutex.synchronize {
123
- @sessions.clear
125
+ @@mutex.synchronize {
126
+ @@sessions.clear
124
127
  }
125
128
  end
126
129
  def run_cleaner
@@ -130,16 +133,16 @@ module SBSM
130
133
  #Thread.current.priority = 1
131
134
  loop do
132
135
  sleep self::class::CLEANING_INTERVAL
133
- @mutex.synchronize do
136
+ @@mutex.synchronize do
134
137
  clean()
135
138
  end
136
139
  end
137
140
  end
138
141
  end
139
142
  def [](key)
140
- @mutex.synchronize do
141
- unless((s = @sessions[key]) && !s.expired?)
142
- s = @sessions[key] = @session_class.new(app: @app, cookie_name: @cookie_name, trans_handler: @trans_handler, validator: @validator, unknown_user: @unknown_user)
143
+ @@mutex.synchronize do
144
+ unless((s = @@sessions[key]) && !s.expired?)
145
+ s = @@sessions[key] = @session_class.new(app: @app, cookie_name: @cookie_name, trans_handler: @trans_handler, validator: @validator, unknown_user: @unknown_user)
143
146
  end
144
147
  s.reset()
145
148
  s.touch()
data/lib/sbsm/state.rb CHANGED
File without changes
data/lib/sbsm/user.rb CHANGED
File without changes
data/lib/sbsm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SBSM
2
- VERSION = '1.4.5'
2
+ VERSION = '1.4.6'
3
3
  end
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.4.5
4
+ version: 1.4.6
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: 2017-06-19 00:00:00.000000000 Z
11
+ date: 2017-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack