ctp的python扩展搞定一半

Discussion in 'CTP' started by lvsoft, Jul 23, 2010.

  1. 目前行情可以用python接收了。

    其实还是蛮复杂的。因为在api里面会创建线程回调。
    这种情况下需要在python端维护新的堆栈空间和全局锁。
    而且这两天事情特别多...利用零零碎碎的时间终于折腾个大概了。

    我把代码以LGPL授权共享:

    http://rapidshare.com/files/408623203/python-ctp.0.0.1-tar.bz2

    运行环境为linux,64bit环境,python2.6环境。
     
  2. you were fast.. :)
     
  3. 谢谢,学习学习。
     
  4. 快手~
     
  5. 高手
     
  6. 高手。拜服。
     
  7. 终于有人用python实现了。

    不知什么时候可以看见用erlang实现的代码
     
  8. 这个扩展不好做。erlang也一样是基于C实现的,其扩展也应该是对C友好,
    对C++不友好的。
     
  9. 我知道有朋友用erlang接了CTP,说确实很困难。不过他需要用到erlang的优点。
     
  10. ctp能否做成标准com?或者能否封装成com或winapi的形式?这样是不是很多语言都可以直接使用而不用分别封装?
     
  11. CTP要做成让其他语言易封装的形式,关键在于API模型。
    一个开放的API,应该尽可能基于C做。
    因为绝大多数语言都是基于C实现的。
    基于C++弄点class进去,这些语言要支持就会比较困难。
    其实单单弄点class也还好,关键是还有callback,而且callback一样是class的。
    这样的API利用了太多的C++特征,给其他人对接造成了许多困难。
    我一开始想用boost.python对接的,发现完全不行,
    最后还是基于c对这个c++的做了层封装,再把这个c实现移植到python里面,
    再在python中按照c++的OO框架重建。整个过程有点累...
    还好我用meta programming建立了python端的代码自动生成框架,否则会累吐血的...

    另外就是CTP明显封装过度了。
    定义了无数struct也就算了,这些struct里面每个field的type几乎都重新定义了,这个有必要么...
    看到price,发现类型是pricetype...pricetype是个什么东西,再去看,哦原来是int...
    这个很没有必要,这样看到一个field,想弄清楚他的类型,太累了。
    其实CTP基本没用啥复杂类型,我封装行情接口的时候,弄来弄去也就是char[],int,double三种而已。直接在struct里面定义就可以了,再去typedef定义一套莫名其妙的类型干嘛~~