merona 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ CONNECTION_NODELAY = 1
@@ -0,0 +1,3 @@
1
+ DB = SQLite
2
+
3
+ DB_ACCOUNT = "database/account.db"
@@ -0,0 +1 @@
1
+ SERVER_WORKERS = 5
@@ -0,0 +1,4 @@
1
+ SHAREDMEM = RedisMemory
2
+
3
+ SHAREDMEM_HOST = "localhost"
4
+ SHAREDMEM_PORT = 6379
data/frame/main.rb ADDED
@@ -0,0 +1,26 @@
1
+ # Merona main
2
+
3
+ import 'merona'
4
+ import 'config/*'
5
+
6
+ begin
7
+ if meInitialize
8
+ Log.output "Merona engine started"
9
+ else
10
+ Log.error "Cannot initialize Merona!!"
11
+ end
12
+
13
+ polling do
14
+ # write code here
15
+
16
+ $oid = 0
17
+
18
+ test = Server.new("test", 9916)
19
+ test.add_handler ChatHandler
20
+ test.add_handler PubsubHandler
21
+ test.add_handler SyncHandler
22
+ end
23
+
24
+ rescue
25
+ Log.error "[Error] : #{$!}"
26
+ end
data/frame/merona.rb ADDED
@@ -0,0 +1,17 @@
1
+ # Merona entry
2
+ $LOAD_PATH << "../lib"
3
+ $LOAD_PATH << "."
4
+
5
+ def import(_path)
6
+ if _path[_path.length-1] == '*'
7
+ path = "../lib/" + _path
8
+ Dir[path[0..path.length-1] + "*.rb"].each {|file| require file }
9
+ path = "./" + _path
10
+ Dir[path[0..path.length-1] + "*.rb"].each {|file| require file }
11
+ else
12
+ require _path
13
+ end
14
+ end
15
+
16
+ import 'main.rb'
17
+
@@ -0,0 +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
+
23
+ send_obj(sock, packet)
@@ -0,0 +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
+
42
+
@@ -0,0 +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
29
+ end
@@ -0,0 +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
6
+ end
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.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -91,6 +91,16 @@ files:
91
91
  - lib/server/server.rb
92
92
  - lib/sharedmem/redis.rb
93
93
  - lib/sharedmem/shared_memory.rb
94
+ - frame/config/config_connection.rb
95
+ - frame/config/config_db.rb
96
+ - frame/config/config_server.rb
97
+ - frame/config/config_sharedmem.rb
98
+ - frame/main.rb
99
+ - frame/merona.rb
100
+ - tests/test_chat.rb
101
+ - tests/test_connect.rb
102
+ - tests/test_sqlite.rb
103
+ - tests/test_util.rb
94
104
  homepage: http://github.com/pjc0247/Merona
95
105
  licenses: []
96
106
  post_install_message: