joffice_redis 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,80 @@
1
+ #encoding: utf-8
2
+ =begin
3
+ Copyright 2010 Denis Kokorin <virkdi@mail.ru>
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ =end
17
+
18
+
19
+ require 'digest/sha1'
20
+
21
+ module JOffice
22
+
23
+ class PresenceManagerRedis
24
+
25
+ def initialize(service_id)
26
+ @service_id=service_id
27
+ @db_name="#{@service_id}_weather_presence"
28
+ @db_name_info="xmpp_user_presence_info"
29
+ flush_db
30
+ @presence_redis=JOffice::RedisManager.instance.open_db_em(@db_name_info)
31
+ @weather_presence_redis=JOffice::RedisManager.instance.open_db_em(@db_name)
32
+ end
33
+
34
+ def presence_db_em
35
+ @presence_db_em||=JOffice::RedisManager.instance.open_db_em(@db_name_info)
36
+ end
37
+
38
+ def weather_presence_db_em
39
+ @weather_presence_db_em||=JOffice::RedisManager.instance.open_db_em(@db_name)
40
+ end
41
+
42
+ def hash
43
+ @hash||=Digest::SHA1.new
44
+ end
45
+
46
+ def flush_db
47
+ JOffice::RedisManager.instance.opend_db(@db_name) do |db|
48
+ db.flush_db
49
+ end
50
+ JOffice::RedisManager.instance.opend_db(@db_name_info) do |db|
51
+ db.flush_db
52
+ end
53
+ end
54
+
55
+ #Use
56
+ def save_caps(user_id, resource, caps_node, caps_ver,caps_ext)
57
+ $log.info { "Save caps #{user_id}/#{resource} #{caps_node} : '#{caps_ver}'" }
58
+ hash_key=hash.hexdigest("%s:%s" % [user_id,resource])
59
+ @presence_redis.set("#{hash_key}:ver", caps_ver) {|a|}
60
+ @presence_redis.set("#{hash_key}:node", caps_node) {|a|}
61
+ end
62
+
63
+ def load_caps(user_id, resource)
64
+ hash_key=hash.hexdigest("%s:%s" % [user_id,resource])
65
+ @presence_redis.mget("#{hash_key}:ver", "#{hash_key}:node") do |caps|
66
+ yield(caps.empty? ? {} : {:caps_node=>caps[1], :caps_ver=>caps[0]})
67
+ end
68
+ end
69
+
70
+ #Use
71
+ def delete_caps(user_id, resource)
72
+ $log.info { "Delete caps #{user_id} : '#{resource}'" }
73
+
74
+ hash_key=hash.hexdigest("%s:%s" % [user_id,resource])
75
+ @presence_redis.delete("#{hash_key}:ver") {|a|}
76
+ @presence_redis.delete("#{hash_key}:node") {|a|}
77
+ end
78
+
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: joffice_redis
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
10
+ platform: ruby
11
+ authors:
12
+ - Kokorin Denis
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-05-07 00:00:00 +04:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: joffice
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 1
30
+ - 0
31
+ version: 0.1.0
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: em-redis
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 2
44
+ - 2
45
+ version: 0.2.2
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: msgpack
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 0
57
+ - 3
58
+ - 9
59
+ version: 0.3.9
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: activesupport
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 2
71
+ - 3
72
+ - 5
73
+ version: 2.3.5
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ description: JOffice EM-Redis ORM
77
+ email: mccoder-nospam@ya.ru
78
+ executables: []
79
+
80
+ extensions: []
81
+
82
+ extra_rdoc_files:
83
+ - LICENSE-2.0.txt
84
+ - README.markdown
85
+ files:
86
+ - .gitignore
87
+ - LICENSE-2.0.txt
88
+ - README.markdown
89
+ - Rakefile
90
+ - lib/joffice_redis.rb
91
+ - lib/joffice_redis/cache_model.rb
92
+ - lib/joffice_redis/hash_table.rb
93
+ - lib/joffice_redis/marshal.rb
94
+ - lib/joffice_redis/model_factory.rb
95
+ - lib/joffice_redis/redis_client_base.rb
96
+ - lib/joffice_redis/redis_manager.rb
97
+ - lib/joffice_redis/redis_method_factory.rb
98
+ - lib/joffice_redis/storages/presence_redis.rb
99
+ has_rdoc: true
100
+ homepage: http://github.com/mccoder/JOfficeRedis
101
+ licenses: []
102
+
103
+ post_install_message:
104
+ rdoc_options:
105
+ - --charset=UTF-8
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ segments:
113
+ - 1
114
+ - 9
115
+ - 1
116
+ version: 1.9.1
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ segments:
122
+ - 0
123
+ version: "0"
124
+ requirements: []
125
+
126
+ rubyforge_project:
127
+ rubygems_version: 1.3.6
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: JOffice EM-Redis ORM
131
+ test_files: []
132
+