game-server 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.4.0
data/game-server.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "game-server"
8
- s.version = "0.3.3"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["V_M"]
12
- s.date = "2012-06-06"
12
+ s.date = "2012-06-28"
13
13
  s.description = "siply general-porpuse game server"
14
14
  s.email = "nobody@nowhere.com"
15
15
  s.extra_rdoc_files = [
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
41
41
  s.homepage = "http://github.com/blimp666/game-server"
42
42
  s.licenses = ["MIT"]
43
43
  s.require_paths = ["lib"]
44
- s.rubygems_version = "1.8.16"
44
+ s.rubygems_version = "1.8.15"
45
45
  s.summary = "simply game server"
46
46
 
47
47
  if s.respond_to? :specification_version then
data/lib/base_listner.rb CHANGED
@@ -3,16 +3,12 @@ require File.dirname(__FILE__) + '/daemon_logger'
3
3
  # Базовый модуль для прослушивания JSON запросов от клиента
4
4
  module GameServer::BaseListner
5
5
 
6
- include DaemonLogger
7
- def log_file_path
8
- Rails.root + 'log/socket.log'
9
- end
10
-
6
+ include DaemonLogger::Mixins
11
7
 
12
8
  def find_controller(request)
13
9
  return unless request.name =~ /^[A-Za-z_]+$/
14
10
  x = (controllers_classes_root + "::" + request.name.camelize)
15
- logger.info x
11
+ log x
16
12
  x.constantize
17
13
  rescue NameError
18
14
  return
@@ -41,14 +37,13 @@ module GameServer::BaseListner
41
37
  end
42
38
 
43
39
  def send_data(data)
44
- logger.info "Data sended to #{connection_info}: " + data#.inspect
40
+ log "Data sended to #{connection_info}: " + data#.inspect
45
41
  super(data)
46
42
  end
47
43
 
48
44
 
49
45
  def critical_error(e)
50
- logger.error e
51
- logger.error e.backtrace.join("\n")
46
+ log_exception e
52
47
  send_error(e.class.to_s.underscore)
53
48
  # close_connection_after_writing
54
49
  end
@@ -56,14 +51,13 @@ module GameServer::BaseListner
56
51
  # Обработать входящие данные (может быть несклько строк запросов в одном пакете данных)
57
52
  def receive_data(data)
58
53
  data.gsub!("\000", "")
59
- logger.info "Received from #{connection_info}: " + data.inspect
54
+ log "Received from #{connection_info}: " + data.inspect
60
55
  return if policy_file_request(data)
61
56
  data.split("\n").each do |query_string|
62
57
  process_query(query_string)
63
58
  end
64
59
  rescue => e
65
60
  critical_error(e)
66
- logger.info "\n\n\n\n\n\nCRITICAL RECEIVE DATA SERVER ERROR"
67
61
  end
68
62
 
69
63
  # Обработать один запрос
@@ -79,7 +73,6 @@ module GameServer::BaseListner
79
73
  rescue GameError => e
80
74
  send_error(e.class.to_s.underscore)
81
75
  rescue => e
82
- logger.info "\n\n\n\n\n\nCRITICAL SERVER ERROR"
83
76
  critical_error(e)
84
77
  end
85
78
 
data/lib/client.rb CHANGED
@@ -4,13 +4,11 @@ module GameServer::Client
4
4
  def receive_request(request)
5
5
  find_controller(request.name).new(self, request).run
6
6
  rescue Exception => e
7
- logger.info "\n\n\n\n\n\nCRITICAL SERVER ERROR"
8
- logger.error e
9
- logger.error e.backtrace.join("\n")
7
+ log_exception e
10
8
  end
11
9
 
12
10
  def send_line(string)
13
- logger.info "send_line #{string}\n"
11
+ log "send_line #{string}\n"
14
12
  send_data(string + "\n")
15
13
  end
16
14
 
data/lib/daemon_logger.rb CHANGED
@@ -1,17 +1,64 @@
1
- module DaemonLogger
2
- def init_logger
3
- return if @logger
4
- file = File.open(log_file_path, 'a')
1
+ class DaemonLogger
2
+ include Singleton
3
+ attr_writer :logger
4
+
5
+ class NullLogger
6
+ def method_missing(*args, &block)
7
+ p @args
8
+ end
9
+ end
10
+
11
+
12
+ def init(params)
13
+ raise TypeError.new(":log_file_path required") unless params[:log_file_path]
14
+ file = File.open(params[:log_file_path], 'a')
5
15
  file.sync = true
6
- @logger = Logger.new(file)
7
- @logger.level = Logger::DEBUG
8
- @logger.formatter = Logger::Formatter.new
9
- @logger.datetime_format = "%y-%m-%d %H:%M:%S.%L"
16
+ self.logger = Logger.new(file)
17
+ logger.level = Logger::DEBUG
18
+ logger.formatter = Logger::Formatter.new
19
+ logger.datetime_format = "%y-%m-%d %H:%M:%S.%L"
20
+ end
21
+
22
+ def self.init(*params)
23
+ instance.init(*params)
10
24
  end
11
25
 
12
26
  def logger
13
- init_logger
14
- @logger
27
+ if @logger
28
+ @logger
29
+ else
30
+ warn 'Logger not initialized yet, run init with :log_file_path'
31
+ NullLogger.new
32
+ end
33
+ end
34
+
35
+ module Mixins
36
+
37
+ def log(message, log_type = :info)
38
+ puts "#{Time.now} #{log_type} #{message}"
39
+ DaemonLogger.instance.logger.send(log_type, message)
40
+ end
41
+
42
+ def log_exception(exception, send_mail = true, additional_info = "")
43
+ message = <<"EOF"
44
+ Exception was raised #{exception}
45
+ #{additional_info}
46
+
47
+ BACKTRACE:
48
+ #{exception.backtrace.join("\n")}
49
+ EOF
50
+ puts "SENDING MAIL" if send_mail
51
+ log(message, :error)
52
+ end
53
+
54
+ def with_exception_logging
55
+ yield
56
+ rescue => e
57
+ log_exception e, send_mail = true, additional_info = 'WITH EXCEPTION LOGGING CRITICAL ERROR'
58
+ raise e
59
+ end
60
+
61
+
15
62
  end
16
63
 
17
64
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: game-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-06 00:00:00.000000000 Z
12
+ date: 2012-06-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
16
- requirement: &75806050 !ruby/object:Gem::Requirement
16
+ requirement: &79377330 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *75806050
24
+ version_requirements: *79377330
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &75803220 !ruby/object:Gem::Requirement
27
+ requirement: &79376910 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.12'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *75803220
35
+ version_requirements: *79376910
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &75802570 !ruby/object:Gem::Requirement
38
+ requirement: &79376480 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *75802570
46
+ version_requirements: *79376480
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &75801770 !ruby/object:Gem::Requirement
49
+ requirement: &79375880 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *75801770
57
+ version_requirements: *79375880
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &75801010 !ruby/object:Gem::Requirement
60
+ requirement: &79375370 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *75801010
68
+ version_requirements: *79375370
69
69
  description: siply general-porpuse game server
70
70
  email: nobody@nowhere.com
71
71
  executables: []
@@ -109,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  segments:
111
111
  - 0
112
- hash: 394313517
112
+ hash: 410979699
113
113
  required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  none: false
115
115
  requirements:
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  requirements: []
120
120
  rubyforge_project:
121
- rubygems_version: 1.8.16
121
+ rubygems_version: 1.8.15
122
122
  signing_key:
123
123
  specification_version: 3
124
124
  summary: simply game server