merona 1.1.8 → 1.1.9
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/frame/handler/ping_handler.rb +0 -5
- data/frame/main.rb +4 -1
- data/frame/protocol/ping_protocol.rb +0 -1
- data/lib/channel/channel.rb +2 -1
- data/lib/channel/channel_pool.rb +17 -12
- data/lib/handler/chat_handler.rb +1 -1
- data/lib/handler/handler.rb +5 -0
- data/lib/packet/packet.rb +5 -0
- data/lib/process/process_pool.rb +14 -1
- data/lib/server/connection.rb +9 -7
- data/lib/server/server.rb +1 -1
- data/tests/{test_chat.rb → old/test_chat.rb} +22 -22
- data/tests/{test_connect.rb → old/test_connect.rb} +41 -41
- data/tests/{test_ping.rb → old/test_ping.rb} +41 -41
- data/tests/{test_sqlite.rb → old/test_sqlite.rb} +28 -28
- data/tests/{test_util.rb → old/test_util.rb} +5 -5
- data/tests/server/echo_server/config/config_connection.rb +1 -0
- data/tests/server/echo_server/config/config_db.rb +3 -0
- data/tests/server/echo_server/config/config_server.rb +1 -0
- data/tests/server/echo_server/config/config_sharedmem.rb +4 -0
- data/tests/server/echo_server/handler/echo_handler.rb +8 -0
- data/tests/server/echo_server/main.rb +30 -0
- data/tests/server/echo_server/merona.rb +29 -0
- data/tests/server/echo_server/protocol/ping_protocol.rb +3 -0
- metadata +14 -7
- data/frame/log/2013.2.27.log +0 -16
data/frame/main.rb
CHANGED
data/lib/channel/channel.rb
CHANGED
data/lib/channel/channel_pool.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
class ChannelPool
|
2
|
+
# ChannelPool�� �ʱ�ȭ�Ѵ�.
|
2
3
|
def initialize
|
3
4
|
@channel = {}
|
4
5
|
end
|
6
|
+
|
7
|
+
# ChannelPool�� �����Ѵ�.
|
5
8
|
def dispose
|
6
9
|
end
|
7
10
|
|
8
11
|
# ä�� �̸��� ��ūȭ�ؼ� �ֻ��� ������ ä�ο� ������ �� ����
|
9
12
|
# �ڵ� ������ �����Ų��.
|
10
13
|
#
|
14
|
+
# name : ��ūȭ�� ä�� �̸�
|
15
|
+
# &block : ��ū �� ����� ����
|
16
|
+
#
|
11
17
|
# ex ) "ch.map.party"
|
12
18
|
# "ch.map"
|
13
19
|
# "ch"
|
@@ -25,6 +31,9 @@ class ChannelPool
|
|
25
31
|
end
|
26
32
|
|
27
33
|
# ������ �̸��� ä���� �����Ѵ�
|
34
|
+
#
|
35
|
+
# name : ������ ä���� �̸�
|
36
|
+
# client : ������ Ŭ���̾�Ʈ
|
28
37
|
def subscribe(name, client)
|
29
38
|
tokenize(name) do |t|
|
30
39
|
subscribe t, client
|
@@ -38,6 +47,9 @@ class ChannelPool
|
|
38
47
|
end
|
39
48
|
|
40
49
|
# ������ �̸��� ä���� ������ �����Ѵ�
|
50
|
+
#
|
51
|
+
# name : ���� ������ ä���� �̸�
|
52
|
+
# client : ���� ������ Ŭ���̾�Ʈ
|
41
53
|
def unsubscribe(name, client)
|
42
54
|
tokenize(name) do |t|
|
43
55
|
unsubscribe t, client
|
@@ -51,19 +63,12 @@ class ChannelPool
|
|
51
63
|
end
|
52
64
|
|
53
65
|
# ������ �̸��� ä�ο� ��Ŷ�� �����Ѵ�
|
54
|
-
#
|
55
|
-
#
|
56
|
-
|
57
|
-
|
58
|
-
tokenize(name) do |t|
|
59
|
-
publish t, packet
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
66
|
+
#
|
67
|
+
# name : ������ ä���� �̸�
|
68
|
+
# packet : ������ ��Ŷ
|
69
|
+
def publish(name, packet)
|
63
70
|
return if @channel[name] == nil
|
64
71
|
|
65
|
-
@channel[name].
|
66
|
-
client.publish packet
|
67
|
-
end
|
72
|
+
@channel[name].publish packet
|
68
73
|
end
|
69
74
|
end
|
data/lib/handler/chat_handler.rb
CHANGED
data/lib/handler/handler.rb
CHANGED
data/lib/packet/packet.rb
CHANGED
data/lib/process/process_pool.rb
CHANGED
@@ -18,12 +18,19 @@ class ProcessPool
|
|
18
18
|
def dispose
|
19
19
|
end
|
20
20
|
|
21
|
+
# ������ ������ŭ�� �ϲ��� �����Ѵ�
|
22
|
+
#
|
23
|
+
# n : ������ �ϲ��� ����
|
21
24
|
def create_worker(n)
|
22
25
|
n.times do
|
23
26
|
thread = Thread.new do
|
24
27
|
while true
|
25
28
|
item = @queue.deq(false)
|
26
|
-
|
29
|
+
|
30
|
+
if item.sender.is_alive? == false
|
31
|
+
next
|
32
|
+
end
|
33
|
+
|
27
34
|
@server.handler.each do |handler|
|
28
35
|
handler.recv(@server, item.sender, item.packet)
|
29
36
|
end
|
@@ -33,12 +40,18 @@ class ProcessPool
|
|
33
40
|
@worker.push thread
|
34
41
|
end
|
35
42
|
end
|
43
|
+
|
44
|
+
# ��� �ϲ��� ������
|
36
45
|
def kill
|
37
46
|
@worker.each do |worker|
|
38
47
|
worker.kill
|
39
48
|
end
|
40
49
|
end
|
41
50
|
|
51
|
+
# ť�� ��Ŷ�� �ִ´�
|
52
|
+
#
|
53
|
+
# sender : ��Ŷ�� ������ Ŭ���̾�Ʈ
|
54
|
+
# item : ���� ��Ŷ
|
42
55
|
def enqueue(sender, item)
|
43
56
|
@queue.push WorkItem.new(sender, item)
|
44
57
|
end
|
data/lib/server/connection.rb
CHANGED
@@ -18,6 +18,8 @@ class Connection < EM::Connection
|
|
18
18
|
connect
|
19
19
|
|
20
20
|
set_sock_opt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, CONNECTION_NODELAY)
|
21
|
+
|
22
|
+
@connected = true
|
21
23
|
end
|
22
24
|
# ������ ������ �� �ҷ����� �ҵ�
|
23
25
|
def unbind
|
@@ -26,13 +28,8 @@ class Connection < EM::Connection
|
|
26
28
|
@mem.dispose
|
27
29
|
|
28
30
|
disconnect
|
29
|
-
|
30
|
-
|
31
|
-
# ���� Ŭ���̾�Ʈ�� ��Ŷ�� �����Ѵ�
|
32
|
-
#
|
33
|
-
# packet : ���� ��Ŷ
|
34
|
-
def send(packet)
|
35
|
-
send_object packet
|
31
|
+
|
32
|
+
@connected = false
|
36
33
|
end
|
37
34
|
|
38
35
|
# ���� Ŭ���̾�Ʈ�� ��Ŷ�� ���� �� �ҷ����� �ҵ�
|
@@ -51,4 +48,9 @@ class Connection < EM::Connection
|
|
51
48
|
def disconnect
|
52
49
|
Log.output("lost connection " + @ip)
|
53
50
|
end
|
51
|
+
|
52
|
+
# ���� Ŭ���̾�Ʈ�� ���� ���¸� �����Ѵ�.
|
53
|
+
def is_alive?
|
54
|
+
@connected
|
55
|
+
end
|
54
56
|
end
|
data/lib/server/server.rb
CHANGED
@@ -14,7 +14,7 @@ class Server
|
|
14
14
|
# port : ������ ��Ʈ
|
15
15
|
# klass : Connection �ڵ鷯 Ŭ����
|
16
16
|
def initialize(name,port,klass=Connection)
|
17
|
-
EventMachine.start_server("
|
17
|
+
EventMachine.start_server("0.0.0.0", port, klass, self)
|
18
18
|
|
19
19
|
@clients = Array.new
|
20
20
|
@handler = Array.new
|
@@ -1,23 +1,23 @@
|
|
1
|
-
require 'socket'
|
2
|
-
|
3
|
-
load '../lib/protocol/chat_protocol.rb'
|
4
|
-
load '../lib/packet/packet.rb'
|
5
|
-
load '../lib/packet/chat_packet.rb'
|
6
|
-
|
7
|
-
load 'test_util.rb'
|
8
|
-
|
9
|
-
if ARGV.size == 2
|
10
|
-
addr = ARGV[0]
|
11
|
-
port = ARGV[1]
|
12
|
-
else
|
13
|
-
addr = "localhost"
|
14
|
-
port = 9916
|
15
|
-
end
|
16
|
-
sock = TCPSocket.new addr, port
|
17
|
-
|
18
|
-
packet = ChatPacket.new
|
19
|
-
packet.id = Protocol::CHAT
|
20
|
-
packet.sender = "Aqwer"
|
21
|
-
packet.msg = "AEWF"
|
22
|
-
|
1
|
+
require 'socket'
|
2
|
+
|
3
|
+
load '../lib/protocol/chat_protocol.rb'
|
4
|
+
load '../lib/packet/packet.rb'
|
5
|
+
load '../lib/packet/chat_packet.rb'
|
6
|
+
|
7
|
+
load 'test_util.rb'
|
8
|
+
|
9
|
+
if ARGV.size == 2
|
10
|
+
addr = ARGV[0]
|
11
|
+
port = ARGV[1]
|
12
|
+
else
|
13
|
+
addr = "localhost"
|
14
|
+
port = 9916
|
15
|
+
end
|
16
|
+
sock = TCPSocket.new addr, port
|
17
|
+
|
18
|
+
packet = ChatPacket.new
|
19
|
+
packet.id = Protocol::CHAT
|
20
|
+
packet.sender = "Aqwer"
|
21
|
+
packet.msg = "AEWF"
|
22
|
+
|
23
23
|
send_obj(sock, packet)
|
@@ -1,42 +1,42 @@
|
|
1
|
-
require 'eventmachine'
|
2
|
-
|
3
|
-
load '../lib/packet/packet.rb'
|
4
|
-
load '../lib/protocol/pubsub_protocol.rb'
|
5
|
-
load '../lib/protocol/sync_protocol.rb'
|
6
|
-
|
7
|
-
load 'test_util.rb'
|
8
|
-
|
9
|
-
class Connection < EM::Connection
|
10
|
-
include EM::P::ObjectProtocol
|
11
|
-
|
12
|
-
def initialize(*args)
|
13
|
-
p = Packet.new
|
14
|
-
p.id = Protocol::SUBSCRIBE
|
15
|
-
send_object p
|
16
|
-
|
17
|
-
p.id = Protocol::SYNC
|
18
|
-
p["x"] = 1
|
19
|
-
p["y"] = 2
|
20
|
-
p["oid"] = 3
|
21
|
-
|
22
|
-
100.times do
|
23
|
-
send_object p
|
24
|
-
end
|
25
|
-
end
|
26
|
-
def unbind
|
27
|
-
end
|
28
|
-
|
29
|
-
def receive_object(obj)
|
30
|
-
p obj
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
EM::run do
|
35
|
-
EM::connect "localhost", 9916, Connection
|
36
|
-
end
|
37
|
-
|
38
|
-
while true
|
39
|
-
sleep 1
|
40
|
-
end
|
41
|
-
|
1
|
+
require 'eventmachine'
|
2
|
+
|
3
|
+
load '../lib/packet/packet.rb'
|
4
|
+
load '../lib/protocol/pubsub_protocol.rb'
|
5
|
+
load '../lib/protocol/sync_protocol.rb'
|
6
|
+
|
7
|
+
load 'test_util.rb'
|
8
|
+
|
9
|
+
class Connection < EM::Connection
|
10
|
+
include EM::P::ObjectProtocol
|
11
|
+
|
12
|
+
def initialize(*args)
|
13
|
+
p = Packet.new
|
14
|
+
p.id = Protocol::SUBSCRIBE
|
15
|
+
send_object p
|
16
|
+
|
17
|
+
p.id = Protocol::SYNC
|
18
|
+
p["x"] = 1
|
19
|
+
p["y"] = 2
|
20
|
+
p["oid"] = 3
|
21
|
+
|
22
|
+
100.times do
|
23
|
+
send_object p
|
24
|
+
end
|
25
|
+
end
|
26
|
+
def unbind
|
27
|
+
end
|
28
|
+
|
29
|
+
def receive_object(obj)
|
30
|
+
p obj
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
EM::run do
|
35
|
+
EM::connect "localhost", 9916, Connection
|
36
|
+
end
|
37
|
+
|
38
|
+
while true
|
39
|
+
sleep 1
|
40
|
+
end
|
41
|
+
|
42
42
|
|
@@ -1,42 +1,42 @@
|
|
1
|
-
require 'eventmachine'
|
2
|
-
|
3
|
-
load '../lib/packet/packet.rb'
|
4
|
-
load '../lib/protocol/pubsub_protocol.rb'
|
5
|
-
load '../lib/protocol/sync_protocol.rb'
|
6
|
-
|
7
|
-
load 'test_util.rb'
|
8
|
-
|
9
|
-
require 'Win32API'
|
10
|
-
|
11
|
-
$t = Win32API.new("kernel32", "GetTickCount", nil, 'L')
|
12
|
-
$t.call()
|
13
|
-
|
14
|
-
class Connection < EM::Connection
|
15
|
-
include EM::P::ObjectProtocol
|
16
|
-
|
17
|
-
def initialize(*args)
|
18
|
-
p = Packet.new
|
19
|
-
p.id = Protocol::SUBSCRIBE
|
20
|
-
send_object p
|
21
|
-
|
22
|
-
p.id = 1
|
23
|
-
|
24
|
-
100.times do
|
25
|
-
p["ping"] = $t.call()
|
26
|
-
send_object p
|
27
|
-
p "send " + ($t.call() - p["ping"]).to_s
|
28
|
-
end
|
29
|
-
end
|
30
|
-
def unbind
|
31
|
-
end
|
32
|
-
|
33
|
-
def receive_object(obj)
|
34
|
-
p "reply " + ($t.call() - obj["ping"]).to_s
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
EM::run do
|
39
|
-
EM::connect "localhost", 9916, Connection
|
40
|
-
end
|
41
|
-
|
1
|
+
require 'eventmachine'
|
2
|
+
|
3
|
+
load '../lib/packet/packet.rb'
|
4
|
+
load '../lib/protocol/pubsub_protocol.rb'
|
5
|
+
load '../lib/protocol/sync_protocol.rb'
|
6
|
+
|
7
|
+
load 'test_util.rb'
|
8
|
+
|
9
|
+
require 'Win32API'
|
10
|
+
|
11
|
+
$t = Win32API.new("kernel32", "GetTickCount", nil, 'L')
|
12
|
+
$t.call()
|
13
|
+
|
14
|
+
class Connection < EM::Connection
|
15
|
+
include EM::P::ObjectProtocol
|
16
|
+
|
17
|
+
def initialize(*args)
|
18
|
+
p = Packet.new
|
19
|
+
p.id = Protocol::SUBSCRIBE
|
20
|
+
send_object p
|
21
|
+
|
22
|
+
p.id = 1
|
23
|
+
|
24
|
+
100.times do
|
25
|
+
p["ping"] = $t.call()
|
26
|
+
send_object p
|
27
|
+
p "send " + ($t.call() - p["ping"]).to_s
|
28
|
+
end
|
29
|
+
end
|
30
|
+
def unbind
|
31
|
+
end
|
32
|
+
|
33
|
+
def receive_object(obj)
|
34
|
+
p "reply " + ($t.call() - obj["ping"]).to_s
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
EM::run do
|
39
|
+
EM::connect "localhost", 9916, Connection
|
40
|
+
end
|
41
|
+
|
42
42
|
|
@@ -1,29 +1,29 @@
|
|
1
|
-
load '../lib/db/database.rb'
|
2
|
-
load '../lib/db/sqlite.rb'
|
3
|
-
|
4
|
-
load 'test_util.rb'
|
5
|
-
|
6
|
-
begin
|
7
|
-
|
8
|
-
db = SQLite.new("test.db")
|
9
|
-
|
10
|
-
# create table
|
11
|
-
db.execute "create table account(id TEXT, nick TEXT)"
|
12
|
-
db.insert("account", "id, nick", "'hello', 'world'")
|
13
|
-
db.insert("account", "id, nick", "'aaa', 'bbb'")
|
14
|
-
db.insert("account", "id, nick", "'foo', 'bar'")
|
15
|
-
|
16
|
-
# enum table data
|
17
|
-
rs = db.select("account", "*")
|
18
|
-
|
19
|
-
while (row = rs.next)
|
20
|
-
p row
|
21
|
-
end
|
22
|
-
|
23
|
-
rs.close
|
24
|
-
|
25
|
-
db.dispose
|
26
|
-
|
27
|
-
rescue SQLite3::Exception => e
|
28
|
-
puts "[error] " + e.to_s
|
1
|
+
load '../lib/db/database.rb'
|
2
|
+
load '../lib/db/sqlite.rb'
|
3
|
+
|
4
|
+
load 'test_util.rb'
|
5
|
+
|
6
|
+
begin
|
7
|
+
|
8
|
+
db = SQLite.new("test.db")
|
9
|
+
|
10
|
+
# create table
|
11
|
+
db.execute "create table account(id TEXT, nick TEXT)"
|
12
|
+
db.insert("account", "id, nick", "'hello', 'world'")
|
13
|
+
db.insert("account", "id, nick", "'aaa', 'bbb'")
|
14
|
+
db.insert("account", "id, nick", "'foo', 'bar'")
|
15
|
+
|
16
|
+
# enum table data
|
17
|
+
rs = db.select("account", "*")
|
18
|
+
|
19
|
+
while (row = rs.next)
|
20
|
+
p row
|
21
|
+
end
|
22
|
+
|
23
|
+
rs.close
|
24
|
+
|
25
|
+
db.dispose
|
26
|
+
|
27
|
+
rescue SQLite3::Exception => e
|
28
|
+
puts "[error] " + e.to_s
|
29
29
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'socket'
|
2
|
-
|
3
|
-
def send_obj(sock,obj)
|
4
|
-
data = Marshal.dump(obj)
|
5
|
-
sock.send [data.respond_to?(:bytesize) ? data.bytesize : data.size, data].pack('Na*'), 0
|
1
|
+
require 'socket'
|
2
|
+
|
3
|
+
def send_obj(sock,obj)
|
4
|
+
data = Marshal.dump(obj)
|
5
|
+
sock.send [data.respond_to?(:bytesize) ? data.bytesize : data.size, data].pack('Na*'), 0
|
6
6
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
CONNECTION_NODELAY = 1
|
@@ -0,0 +1 @@
|
|
1
|
+
SERVER_WORKERS = 5
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Merona main
|
2
|
+
|
3
|
+
import 'merona'
|
4
|
+
|
5
|
+
import 'dbms/*'
|
6
|
+
import 'sharedmem/*'
|
7
|
+
import 'handler/*'
|
8
|
+
import 'protocol/*'
|
9
|
+
|
10
|
+
import 'config/*'
|
11
|
+
|
12
|
+
begin
|
13
|
+
if meInitialize
|
14
|
+
Log.output "Merona engine started"
|
15
|
+
else
|
16
|
+
Log.error "Cannot initialize Merona!!"
|
17
|
+
end
|
18
|
+
|
19
|
+
polling do
|
20
|
+
# write code here
|
21
|
+
|
22
|
+
$oid = 0
|
23
|
+
|
24
|
+
echo = Server.new("echo_server", 9916)
|
25
|
+
echo.add_handler EchoHandler
|
26
|
+
end
|
27
|
+
|
28
|
+
rescue
|
29
|
+
Log.error "#{$!}"
|
30
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Merona entry
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
FileUtils.cd(File.dirname(File.expand_path(__FILE__)), :verbose => true)
|
7
|
+
|
8
|
+
$merona_path = Gem::bin_path('merona', 'merona')
|
9
|
+
$merona_path.reverse!
|
10
|
+
$merona_path = $merona_path.split("/", 3)[2]
|
11
|
+
$merona_path.reverse!
|
12
|
+
$merona_path += "/lib"
|
13
|
+
|
14
|
+
$LOAD_PATH << $merona_path
|
15
|
+
$LOAD_PATH << "."
|
16
|
+
|
17
|
+
def import(_path)
|
18
|
+
if _path[_path.length-1] == '*'
|
19
|
+
path = $merona_path + "/" + _path
|
20
|
+
Dir[path[0..path.length-1] + "*.rb"].each {|file| require file }
|
21
|
+
path = "./" + _path
|
22
|
+
Dir[path[0..path.length-1] + "*.rb"].each {|file| require file }
|
23
|
+
else
|
24
|
+
require _path
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
import 'main.rb'
|
29
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merona
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -97,16 +97,23 @@ files:
|
|
97
97
|
- frame/config/config_sharedmem.rb
|
98
98
|
- frame/database/account.db
|
99
99
|
- frame/handler/ping_handler.rb
|
100
|
-
- frame/log/2013.2.27.log
|
101
100
|
- frame/main.rb
|
102
101
|
- frame/merona.rb
|
103
102
|
- frame/protocol/ping_protocol.rb
|
104
103
|
- frame/run.bat
|
105
|
-
- tests/test_chat.rb
|
106
|
-
- tests/test_connect.rb
|
107
|
-
- tests/test_ping.rb
|
108
|
-
- tests/test_sqlite.rb
|
109
|
-
- tests/test_util.rb
|
104
|
+
- tests/old/test_chat.rb
|
105
|
+
- tests/old/test_connect.rb
|
106
|
+
- tests/old/test_ping.rb
|
107
|
+
- tests/old/test_sqlite.rb
|
108
|
+
- tests/old/test_util.rb
|
109
|
+
- tests/server/echo_server/config/config_connection.rb
|
110
|
+
- tests/server/echo_server/config/config_db.rb
|
111
|
+
- tests/server/echo_server/config/config_server.rb
|
112
|
+
- tests/server/echo_server/config/config_sharedmem.rb
|
113
|
+
- tests/server/echo_server/handler/echo_handler.rb
|
114
|
+
- tests/server/echo_server/main.rb
|
115
|
+
- tests/server/echo_server/merona.rb
|
116
|
+
- tests/server/echo_server/protocol/ping_protocol.rb
|
110
117
|
- bin/merona
|
111
118
|
homepage: http://github.com/pjc0247/Merona
|
112
119
|
licenses: []
|
data/frame/log/2013.2.27.log
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
[2013:2:27:8:24:13] [LOG] : Merona engine started
|
2
|
-
[2013:2:27:8:24:14] [LOG] : quit by user
|
3
|
-
[2013:2:27:8:24:23] [LOG] : Merona engine started
|
4
|
-
[2013:2:27:8:24:24] [LOG] : quit by user
|
5
|
-
[2013:2:27:8:24:34] [LOG] : Merona engine started
|
6
|
-
[2013:2:27:8:24:43] [LOG] : quit by user
|
7
|
-
[2013:2:27:8:27:36] [LOG] : Merona engine started
|
8
|
-
[2013:2:27:8:27:37] [LOG] : quit by user
|
9
|
-
[2013:2:27:8:27:55] [LOG] : Merona engine started
|
10
|
-
[2013:2:27:8:27:58] [LOG] : quit by user
|
11
|
-
[2013:2:27:8:29:30] [LOG] : Merona engine started
|
12
|
-
[2013:2:27:8:29:31] [LOG] : quit by user
|
13
|
-
[2013:2:27:18:44:23] [LOG] : Merona engine started
|
14
|
-
[2013:2:27:18:44:25] [LOG] : quit by user
|
15
|
-
[2013:2:27:18:44:40] [LOG] : Merona engine started
|
16
|
-
[2013:2:27:18:44:42] [LOG] : quit by user
|