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 +1 -1
- data/game-server.gemspec +3 -3
- data/lib/base_listner.rb +5 -12
- data/lib/client.rb +2 -4
- data/lib/daemon_logger.rb +57 -10
- metadata +14 -14
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
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.
|
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-
|
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.
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
14
|
-
|
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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *79377330
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
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: *
|
35
|
+
version_requirements: *79376910
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
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: *
|
46
|
+
version_requirements: *79376480
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: jeweler
|
49
|
-
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: *
|
57
|
+
version_requirements: *79375880
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
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: *
|
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:
|
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.
|
121
|
+
rubygems_version: 1.8.15
|
122
122
|
signing_key:
|
123
123
|
specification_version: 3
|
124
124
|
summary: simply game server
|