game-server 0.3.3 → 0.4.0

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.
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