merona 1.1.8 → 1.1.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|