bugfix : connection

This commit is contained in:
云风
2012-08-30 16:30:52 +08:00
parent 1791becd09
commit 51ef283887
8 changed files with 34 additions and 20 deletions

View File

@@ -9,7 +9,7 @@ skynet.dispatch(function(msg, sz , session, address)
-- init notice
local reply = instance[address]
if reply then
skynet.send(reply[2] , reply[1], address)
skynet.send(reply[2] , reply[1], skynet.address(address))
instance[address] = nil
end
else

View File

@@ -1,5 +1,6 @@
local skynet = require "skynet"
local socket = require "socket"
local int64 = require "int64"
local string = string
local table = table
local tonumber = tonumber
@@ -10,6 +11,12 @@ local redis_server, redis_db = ...
local function compose_message(msg)
local lines = { "*" .. #msg }
for _,v in ipairs(msg) do
local t = type(v)
if t == "number" then
v = tostring(v)
elseif t == "userdata" then
v = int64.tostring(int64.new(v),10)
end
table.insert(lines,"$"..#v)
table.insert(lines,v)
end
@@ -101,6 +108,7 @@ redcmd[45] = function(data) -- '-'
end
redcmd[58] = function(data) -- ':'
-- todo: return string later
response(true, tonumber(data))
end
@@ -117,7 +125,6 @@ end
local function init()
while socket.connect(redis_server) do
print("Connect failed : "..redis_server)
skynet.sleep(1000)
end
if redis_db then

View File

@@ -1,27 +1,26 @@
local skynet = require "skynet"
local log = require "log"
local config = require "config"
local name = {
main = "127.0.0.1:6379",
}
local redis_conf = skynet.getenv "redis"
local name = config (redis_conf)
local connection = {}
skynet.dispatch(function(msg, sz , session, from)
local dbname = skynet.tostring(msg,sz)
local dbname = skynet.unpack(msg,sz)
if connection[dbname] then
skynet.ret(connection[dbname])
skynet.ret(skynet.pack(connection[dbname]))
return
end
if name[dbname] == nil then
log.Error("Invalid db name : "..dbname)
skynet.ret("")
skynet.ret(skynet.pack(nil))
return
end
local redis_cli = skynet.launch("snlua", "redis-cli", name[dbname])
connection[dbname] = redis_cli
skynet.ret(redis_cli)
skynet.ret(skynet.pack(redis_cli))
end)
skynet.register ".redis-manager"