Zookeeper 的 Lua 绑定
2013-04-07 00:07 Haippy 阅读(5229) 评论(1) 编辑 收藏 举报最近似乎喜欢上了 Lua(关于 Lua 本文就不作更多的介绍了,详见 Lua 官方页面),作为一门嵌入式语言,Lua 确实小而美,设计精巧,让人不得不感叹 Lua 作者的智慧和良苦用心。
以前写过一些有关 Zookeeper C API 的文章,自己觉得对 Zookeeper C API 比较熟悉,就想能不能利用 Zookeeper C API 给 Zookeeper 写一个 Lua 绑定呢,Google 一下发现以前也并没有人给 Zookeeper 贡献过 Lua 接口,python,ruby,GO,Node.js 等都有,连 Perl 官方都提供了接口,唯独缺 Lua,所以就想自己动手实现一个,并取名为 zklua,清明在实验室宅了两天(第三天和师兄以及几个好友去爬京西古道,走了接近15公里,当时感觉腿都废了,还是要经常锻炼,IT 男身体最重要了),不过还是把 zklua 的代码框架搭起来了,实现了部分 API,接下来就是填剩下的 API 了,争取利用四月份的空余时间写完,现在还幻想着写好 zklua(构建,文档,代码风格之类的细节)了以后能够回馈到Zookeeper社区,代码先截个图:
目前部分 API 已经可以用了,以 zklua.adelete() 为例,调用方法如下:
require "zklua" function zklua_my_watcher(type, state, path) if type == zklua.ZOO_SESSION_EVENT then if state == zklua.ZOO_CONNECTED_STATE then print("Connected to zookeeper service successfully!\n"); elseif (state == ZOO_EXPIRED_SESSION_STATE) then print("Zookeeper session expired!\n"); end end end function zklua_my_void_completion(rc, data) print("zklua_my_void_completion:\n") print("rc: "..rc.."\tdata: "..data) end zklua.set_log_stream("zklua.log") zh = zklua.init("127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183", zklua_my_watcher, 10000) ret = zklua.adelete(zh, "/zklua", -1, zklua_my_void_completion, "zklua adelete.") print("zklua.adelete ret: "..ret) print("hit any key to continue...") io.read()
最后,我在 github 给 zklua 建了个仓库(zklua),但是由于目前最终的接口还没有完全实现,某些接口也还没有稳定下来,本着负责任的态度,代码暂时并没有提交到 github 仓库中,不过对 zookeeper 和 lua 都感兴趣的同鞋可以先 star 一下,争取利用 4 月的空余时间完成 zklua ;-)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗