livedata 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 siddick
1
+ Copyright (c) 2009 siddick.com
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README CHANGED
@@ -2,15 +2,18 @@
2
2
  LiveData is a rubygem. This gem is used to implement the applications like chat, live process montior, etc.,
3
3
 
4
4
 
5
- == Installation
5
+ == Rails2 Installation
6
6
  Step 1 :-
7
+ Install the gem
8
+ gem install livedata
9
+ Step 2 :-
7
10
  Add the livedata gem in config/environment.rb
8
11
  config.gem "livedata"
9
- Step 2 :-
12
+ Step 3 :-
10
13
  Add the following configuration in the config/environments/development.rb, config/environments/production.rb and config/environments/test.rb
11
14
  config.threadsafe!
12
15
 
13
- == Example
16
+ == Rails2 Example
14
17
  Class MainController < ApplicationController
15
18
 
16
19
  def get_msg
@@ -41,3 +44,26 @@
41
44
  Second Tab :-
42
45
  http://localhost:3000/main/send_msg/tester?msg=Hello World
43
46
 
47
+ == Rails3 Installation
48
+ Step 1 :-
49
+ Add the following line in the Gemfile
50
+ gem 'livedata', '>= 0.3.0'
51
+ Step 2 :-
52
+ Install the gem, execute the following command
53
+ bundle install
54
+
55
+ == Rails3 Example
56
+ The livedata gem contain, configurations, controller and routine.
57
+ Execute the following command to find the services, that already present.
58
+ rake routes
59
+ == Run web server
60
+ rails s -b 0.0.0.0 -p 3000
61
+ == Browser
62
+ Open two tabs in the web browser
63
+ First tab :-
64
+ http://localhost:3000/live_data/chat/guest.xml
65
+ Second tab :-
66
+ http://localhost:3000/live_data/chat/guest/put?message=Hello World
67
+
68
+ == Bugs
69
+ Report the bug on http://github.com/siddick/live_data/issues
data/Rakefile CHANGED
@@ -32,7 +32,7 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
32
32
  rdoc.rdoc_files.include('lib/**/*.rb')
33
33
  end
34
34
 
35
- dist_dirs = [ "lib", "test", "examples" ]
35
+ dist_dirs = [ "lib", "test", "examples", "app", "config" ]
36
36
 
37
37
  spec = Gem::Specification.new do |s|
38
38
  s.platform = Gem::Platform::RUBY
@@ -0,0 +1,39 @@
1
+ class LiveDataController < ApplicationController
2
+ DefaultUserId = "guest"
3
+ DefaultChannelId = "chat"
4
+ DefaultWaitTime = 15
5
+
6
+ def get
7
+ user_id = params[:user_id] || DefaultUserId
8
+ channel_id = params[:channel_id] || DefaultChannelId
9
+ channel = LiveData.get_channel(channel_id) || LiveData.create_channel(channel_id)
10
+ user = channel.get_user( user_id ) || channel.create_user( user_id )
11
+ user.set_read_time( ( params[:read_time] || DefaultWaitTime ).to_i )
12
+ respond_to do |format|
13
+ format.html {
14
+ render :text => user.read.to_query
15
+ }
16
+ format.xml {
17
+ render :text => user.read.to_xml
18
+ }
19
+ format.yaml {
20
+ render :text => user.read.to_yaml
21
+ }
22
+ format.json {
23
+ render :text => user.read.to_json
24
+ }
25
+
26
+ end
27
+
28
+ end
29
+
30
+ def put
31
+ user_id = params[:user_id] || GestUserId
32
+ channel_id = params[:channel_id] || DefaultChannelId
33
+ channel = LiveData.get_channel(channel_id) || LiveData.create_channel(channel_id)
34
+ user = channel.get_user( user_id ) || channel.create_user( user_id )
35
+ user.write( params.to_hash )
36
+ render :text => "OK", :layout => false
37
+ end
38
+
39
+ end
File without changes
@@ -0,0 +1,3 @@
1
+ Rails::Application.configure do
2
+ config.threadsafe!
3
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Rails::Application.routes.draw do
2
+ get 'live_data/:channel_id/:user_id' => LiveDataController.action(:get)
3
+ get 'live_data/:channel_id/:user_id/put(.:format)' => LiveDataController.action(:put)
4
+ put 'live_data/:channel_id/:user_id(.:format)' => LiveDataController.action(:put)
5
+ end
@@ -0,0 +1,4 @@
1
+ module LiveData
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -16,7 +16,7 @@ module LiveData
16
16
  if( already_use )
17
17
  return nil
18
18
  end
19
- used_time = sleep(time )
19
+ used_time = sleep( time )
20
20
  Lock.synchronize {
21
21
  user_threads.delete( user_id )
22
22
  }
@@ -79,11 +79,11 @@ module LiveData
79
79
  # * +yaml_data+ - yaml string
80
80
  def write_yaml( yaml_data )
81
81
  return unless yaml_data and yaml_data.class == String
82
- len = [ yaml_data.length ].pack( IntegerPackCode )
83
- @lock.synchronize {
84
- @write_pipe.write( len )
85
- @write_pipe.write( yaml_data )
86
- }
82
+ len = [ yaml_data.length ].pack( IntegerPackCode )
83
+ @lock.synchronize {
84
+ @write_pipe.write( len )
85
+ @write_pipe.write( yaml_data )
86
+ }
87
87
  end
88
88
 
89
89
  # Write a Object
@@ -98,10 +98,10 @@ module LiveData
98
98
  @groups.dup.each{|grp|
99
99
  grp.remove_user( self )
100
100
  }
101
- if( @channel )
102
- @channel.users.delete( @name )
103
- @channel.user_in_groups.delete( @name )
104
- end
101
+ if( @channel )
102
+ @channel.users.delete( @name )
103
+ @channel.user_in_groups.delete( @name )
104
+ end
105
105
  begin
106
106
  @read_pipe.close
107
107
  @write_pipe.close
@@ -1,4 +1,4 @@
1
1
 
2
2
  module LiveData
3
- VERSION = '0.2.4'
3
+ VERSION = '0.3.0'
4
4
  end
data/lib/live_data.rb CHANGED
@@ -3,15 +3,21 @@
3
3
  require 'thread'
4
4
  require 'yaml'
5
5
 
6
- require 'live_data/version'
7
- require 'live_data/channel'
8
- require 'live_data/user'
9
- require 'live_data/group'
10
- require 'live_data/thread_watch'
11
6
 
12
7
  module LiveData
13
8
  Channels = {}
14
9
 
10
+ autoload :Version, 'live_data/version'
11
+ autoload :Channel, 'live_data/channel'
12
+ autoload :User, 'live_data/user'
13
+ autoload :Group, 'live_data/group'
14
+ autoload :ThreadWatch, 'live_data/thread_watch'
15
+
16
+ if( defined?(Rails::Engine) )
17
+ class Engine < Rails::Engine
18
+ end
19
+ end
20
+
15
21
  def self.create_channel( name )
16
22
  unless( Channels[name] )
17
23
  Channels[name] = LiveData::Channel.new( name )
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: livedata
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 2
8
- - 4
9
- version: 0.2.4
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Mohammed Siddick. E
@@ -14,7 +15,7 @@ autorequire: live_data
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-02-26 00:00:00 +05:30
18
+ date: 2010-09-17 00:00:00 +05:30
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -32,16 +33,21 @@ files:
32
33
  - install.rb
33
34
  - README
34
35
  - CHANGELOG
35
- - lib/live_data/channel.rb
36
- - lib/live_data/thread_watch.rb
37
- - lib/live_data/group.rb
38
- - lib/live_data/user.rb
39
- - lib/live_data/version.rb
40
36
  - lib/livedata.rb
41
37
  - lib/live_data.rb
42
- - test/thread_watch_test.rb
38
+ - lib/live_data/version.rb
39
+ - lib/live_data/group.rb
40
+ - lib/live_data/channel.rb
41
+ - lib/live_data/engine.rb
42
+ - lib/live_data/user.rb
43
+ - lib/live_data/thread_watch.rb
43
44
  - test/live_data_test.rb
44
45
  - test/test_helper.rb
46
+ - test/thread_watch_test.rb
47
+ - app/views/live_data/get.xml.erb
48
+ - app/controllers/live_data_controller.rb
49
+ - config/initializers/livedata_init.rb
50
+ - config/routes.rb
45
51
  has_rdoc: true
46
52
  homepage: http://siddick.github.com/
47
53
  licenses: []
@@ -53,23 +59,27 @@ rdoc_options:
53
59
  require_paths:
54
60
  - lib
55
61
  required_ruby_version: !ruby/object:Gem::Requirement
62
+ none: false
56
63
  requirements:
57
64
  - - ">="
58
65
  - !ruby/object:Gem::Version
66
+ hash: 3
59
67
  segments:
60
68
  - 0
61
69
  version: "0"
62
70
  required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
63
72
  requirements:
64
73
  - - ">="
65
74
  - !ruby/object:Gem::Version
75
+ hash: 3
66
76
  segments:
67
77
  - 0
68
78
  version: "0"
69
79
  requirements: []
70
80
 
71
81
  rubyforge_project:
72
- rubygems_version: 1.3.6
82
+ rubygems_version: 1.3.7
73
83
  signing_key:
74
84
  specification_version: 3
75
85
  summary: Handle live data