kyototycoon lua 複数取得を少し変えてみた。

フラグデータを値データを分けて保管するためにluaを利用していたのですが

getの時

function get_player( inmap, outmap )
 local key = inmap.key
 local dbid = tonumber(inmap.db)
 local playerdb = kt.dbs[dbid];
 local item = playerdb:get(key)
 if item then
   local ix = kt.mapload(item)
   for k,v in pairs(ix) do
     outmap[k]=v
   end
 end
 return kt.RVSUCCESS
end

これで
ktremotemgr script -port 30132 get_player key test db 1
すると以下のデータを取得出来るのですが

flag  1
value   testv

これだと複数取得のときと挙動が変わるので複数取得に併せようかなと

function get_player_bulk( inmap, outmap )
 local dbid = tonumber(inmap.db)
 local playerdb = kt.dbs[dbid];
 local keys ={}
 for ik,iv in pairs(inmap) do
   table.insert(keys,ik)
 end
 local res = playerdb:get_bulk(keys)
 if not res then
   return kt.RVEINTERNAL
 end
 for key, value in pairs(res) do
   local ix = kt.mapload(value)
   local v = ”
   for ik,iv in pairs(ix) do
     if string.len(v) > 0 then
       v = v .. “\t”
     end
     v = v .. ik .. “\t” .. iv
   end
   outmap[key] = v
 end
 return kt.RVSUCCESS
end

ただタブ区切りで全てのデータをつなげてるだけですが
ktremotemgr script -port 30132 get_player_bulk test k test2 k db 1

test flag 1 value testv
test2 flag 1 value test2v

まぁまぁ使いやすくなりました。
結局アプリケーションで処理するのでflagとvalueを分けなくても良いのですが
今回の利用の場合、キャッシュ用フラグみたいなただのカウンターなので、valueとは関係なく分けた方が良いかなとこんな感じにしてみました。

This entry was posted on 月曜日, 12月 3rd, 2012 at 9:04 PM and is filed under Kyototycoon/cabinet. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Unityによるゲームを公開しております iOS/Android
https://itunes.apple.com/jp/app/lost-knight-3d-action/id900917032
https://play.google.com/store/apps/details?id=com.groundroad.runknight

各種開発支援・機能開発等小さいお仕事などもお請けしております。
unity開発支援, PHPシステム開発, javascript/html5 フロント開発, titanium mobileアプリ開発
お気軽にお問い合わせください
大崎・五反田近郊での対面でのお打ち合わせはいつでも可能です。