zoukankan      html  css  js  c++  java
  • Zookeeper 的 Lua 绑定

    最近似乎喜欢上了 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 ;-)。

  • 相关阅读:
    POJ 3140 Contestants Division (树dp)
    POJ 3107 Godfather (树重心)
    POJ 1655 Balancing Act (树的重心)
    HDU 3534 Tree (经典树形dp)
    HDU 1561 The more, The Better (树形dp)
    HDU 1011 Starship Troopers (树dp)
    Light oj 1085
    Light oj 1013
    Light oj 1134
    FZU 2224 An exciting GCD problem(GCD种类预处理+树状数组维护)同hdu5869
  • 原文地址:https://www.cnblogs.com/haippy/p/3003249.html
Copyright © 2011-2022 走看看