Advertisement
Delfigamer

rsbin/storage.r

Apr 16th, 2018
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.67 KB | None | 0 0
  1. local moduledef = registermodule("rsbin/storage", "src/rsbin/storage.hpp")
  2. include(moduledef, "common/task")
  3. include(moduledef, "common/refobject")
  4. decl(moduledef, {
  5.     rstruct = true,
  6.     structtype = true,
  7.     location = {{"src/rsbin/storage.hpp", 10, 2}},
  8.     attrs = {["r::name"] = {"storagemap"}, ["r::struct"] = false},
  9.     sourcename = "::rsbin::StorageMap",
  10.     luaname = "rsbin.storagemap",
  11.     commonname = "rsbin_storagemap",
  12.     fields = {
  13.         {
  14.     location = {{"src/rsbin/storage.hpp", 12, 3}},
  15.     attrs = {},
  16.             name = {"ptr"},
  17.             interntype = types.pointertype:create(types.scalartype:create(nslookup(moduledef, "::uint8_t"), false), false),
  18.         },
  19.         {
  20.     location = {{"src/rsbin/storage.hpp", 13, 3}},
  21.     attrs = {},
  22.             name = {"length"},
  23.             interntype = types.scalartype:create(nslookup(moduledef, "::uint32_t"), false),
  24.         },
  25.     },
  26. })
  27. decl(moduledef, {
  28.     rclass = true,
  29.     classtype = true,
  30.     location = {{"src/rsbin/storage.hpp", 16, 2}},
  31.     attrs = {["r::class"] = false, ["r::name"] = {"maptask"}},
  32.     base = nslookup(moduledef, "::Task"),
  33.     sourcename = "::rsbin::MapTask",
  34.     luaname = "rsbin.maptask",
  35.     commonname = "rsbin_maptask",
  36. })
  37. decl(moduledef, {
  38.     rmethod = true,
  39.     location = {{"src/rsbin/storage.hpp", 21, 11}},
  40.     attrs = {["r::method"] = false},
  41.     rettype = types.structtype:create(nslookup(moduledef, "::rsbin::StorageMap"), false),
  42.     argtypes = {
  43.     },
  44.     outerdecl = nslookup(moduledef, "::rsbin::MapTask"),
  45.     sourcename = "::rsbin::MapTask::getmap",
  46.     sourcelocalname = "getmap",
  47.     lualocalname = "getmap",
  48.     commonname = "rsbin_maptask_getmap",
  49. })
  50. decl(moduledef, {
  51.     rclass = true,
  52.     classtype = true,
  53.     location = {{"src/rsbin/storage.hpp", 24, 2}},
  54.     attrs = {["r::class"] = false, ["r::name"] = {"getlimittask"}},
  55.     base = nslookup(moduledef, "::Task"),
  56.     sourcename = "::rsbin::GetLimitTask",
  57.     luaname = "rsbin.getlimittask",
  58.     commonname = "rsbin_getlimittask",
  59. })
  60. decl(moduledef, {
  61.     rmethod = true,
  62.     location = {{"src/rsbin/storage.hpp", 29, 11}},
  63.     attrs = {["r::method"] = false},
  64.     rettype = types.scalartype:create(nslookup(moduledef, "::uint64_t"), false),
  65.     argtypes = {
  66.     },
  67.     outerdecl = nslookup(moduledef, "::rsbin::GetLimitTask"),
  68.     sourcename = "::rsbin::GetLimitTask::getlimit",
  69.     sourcelocalname = "getlimit",
  70.     lualocalname = "getlimit",
  71.     commonname = "rsbin_getlimittask_getlimit",
  72. })
  73. decl(moduledef, {
  74.     rclass = true,
  75.     classtype = true,
  76.     location = {{"src/rsbin/storage.hpp", 32, 2}},
  77.     attrs = {["r::class"] = false, ["r::name"] = {"storage"}},
  78.     base = nslookup(moduledef, "::RefObject"),
  79.     sourcename = "::rsbin::Storage",
  80.     luaname = "rsbin.storage",
  81.     commonname = "rsbin_storage",
  82. })
  83. decl(moduledef, {
  84.     rmethod = true,
  85.     location = {{"src/rsbin/storage.hpp", 41, 11}},
  86.     attrs = {["r::method"] = false},
  87.     rettype = types.classreftype:create(nslookup(moduledef, "::rsbin::MapTask"), false, nil),
  88.     argtypes = {
  89.         types.scalartype:create(nslookup(moduledef, "::uint64_t"), false),
  90.         types.scalartype:create(nslookup(moduledef, "::uint32_t"), false),
  91.         types.fundamental:create("bool", false),
  92.         types.fundamental:create("bool", false),
  93.     },
  94.     outerdecl = nslookup(moduledef, "::rsbin::Storage"),
  95.     sourcename = "::rsbin::Storage::startmap",
  96.     sourcelocalname = "startmap",
  97.     lualocalname = "startmap",
  98.     commonname = "rsbin_storage_startmap",
  99. })
  100. decl(moduledef, {
  101.     rmethod = true,
  102.     location = {{"src/rsbin/storage.hpp", 45, 11}},
  103.     attrs = {["r::method"] = false},
  104.     rettype = types.classreftype:create(nslookup(moduledef, "::rsbin::GetLimitTask"), false, nil),
  105.     argtypes = {
  106.         types.pointertype:create(types.scalartype:create(nslookup(moduledef, "::uint64_t"), false), false),
  107.     },
  108.     outerdecl = nslookup(moduledef, "::rsbin::Storage"),
  109.     sourcename = "::rsbin::Storage::startgetlimit",
  110.     sourcelocalname = "startgetlimit",
  111.     lualocalname = "startgetlimit",
  112.     commonname = "rsbin_storage_startgetlimit",
  113. })
  114. decl(moduledef, {
  115.     rmethod = true,
  116.     location = {{"src/rsbin/storage.hpp", 47, 11}},
  117.     attrs = {["r::method"] = false},
  118.     rettype = types.classreftype:create(nslookup(moduledef, "::Task"), false, nil),
  119.     argtypes = {
  120.         types.scalartype:create(nslookup(moduledef, "::uint64_t"), false),
  121.     },
  122.     outerdecl = nslookup(moduledef, "::rsbin::Storage"),
  123.     sourcename = "::rsbin::Storage::startsetlimit",
  124.     sourcelocalname = "startsetlimit",
  125.     lualocalname = "startsetlimit",
  126.     commonname = "rsbin_storage_startsetlimit",
  127. })
  128. decl(moduledef, {
  129.     rmethod = true,
  130.     location = {{"src/rsbin/storage.hpp", 49, 11}},
  131.     attrs = {["r::method"] = false},
  132.     rettype = types.classreftype:create(nslookup(moduledef, "::Task"), false, nil),
  133.     argtypes = {
  134.     },
  135.     outerdecl = nslookup(moduledef, "::rsbin::Storage"),
  136.     sourcename = "::rsbin::Storage::startflush",
  137.     sourcelocalname = "startflush",
  138.     lualocalname = "startflush",
  139.     commonname = "rsbin_storage_startflush",
  140. })
  141. decl(moduledef, {
  142.     rmethod = true,
  143.     location = {{"src/rsbin/storage.hpp", 51, 11}},
  144.     attrs = {["r::method"] = false},
  145.     rettype = types.classreftype:create(nslookup(moduledef, "::Task"), false, nil),
  146.     argtypes = {
  147.     },
  148.     outerdecl = nslookup(moduledef, "::rsbin::Storage"),
  149.     sourcename = "::rsbin::Storage::startclose",
  150.     sourcelocalname = "startclose",
  151.     lualocalname = "startclose",
  152.     commonname = "rsbin_storage_startclose",
  153. })
  154. decl(moduledef, {
  155.     remit = true,
  156.     location = {{"src/rsbin/storage.hpp", 55, 1}},
  157.     payload = "\
  158. \9function rsbin_storage:map(offset, length, flagread, flagwrite)\
  159. \9\9local task = self:startmap(offset, length, flagread, flagwrite)\
  160. \9\9if not task then\
  161. \9\9\9return nil, nil, 0\
  162. \9\9end\
  163. \9\9while not task:poll() do\
  164. \9\9\9coroutine.yield()\
  165. \9\9end\
  166. \9\9local map = task:getmap()\
  167. \9\9if map.ptr == nil or map.length == 0 then\
  168. \9\9\9return task, nil, 0\
  169. \9\9else\
  170. \9\9\9return task, map.ptr, map.length\
  171. \9\9end\
  172. \9end\
  173. \
  174. \9function rsbin_storage:getlimit()\
  175. \9\9local limit = ffi.new('uint64_t[1]')\
  176. \9\9local task = self:startgetlimit(limit)\
  177. \9\9if task then\
  178. \9\9\9while not task:poll() do\
  179. \9\9\9\9coroutine.yield()\
  180. \9\9\9end\
  181. \9\9\9local result = task:getlimit()\
  182. \9\9\9task:release()\
  183. \9\9\9return result\
  184. \9\9else\
  185. \9\9\9return limit[0]\
  186. \9\9end\
  187. \9end\
  188. \
  189. \9function rsbin_storage:setlimit(limit)\
  190. \9\9local task = self:startsetlimit(limit)\
  191. \9\9if task then\
  192. \9\9\9while not task:poll() do\
  193. \9\9\9\9coroutine.yield()\
  194. \9\9\9end\
  195. \9\9\9task:release()\
  196. \9\9end\
  197. \9end\
  198. \
  199. \9function rsbin_storage:flush()\
  200. \9\9local task = self:startflush()\
  201. \9\9if task then\
  202. \9\9\9while not task:poll() do\
  203. \9\9\9\9coroutine.yield()\
  204. \9\9\9end\
  205. \9\9\9task:release()\
  206. \9\9end\
  207. \9end\
  208. \
  209. \9function rsbin_storage:close()\
  210. \9\9local task = self:startclose()\
  211. \9\9if task then\
  212. \9\9\9while not task:poll() do\
  213. \9\9\9\9coroutine.yield()\
  214. \9\9\9end\
  215. \9\9\9task:release()\
  216. \9\9end\
  217. \9end\
  218. ",
  219. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement