[トップ][一覧][最近の更新]

編集履歴:差分

2008/12/15 10:42:48 JST以来のChicken/Scheme/2008/12/15/loudmouth.eggの変更箇所

編集履歴ページに戻る

  XMPPクライアントをまっさらのschemeで書くのに挫折したので、
  かわりに[http://www.loudmouth-project.org/ loudmouth]をchickenから呼べるようにした。
  
  - [[files:egg/loudmouth.egg]]
  
+ マニュアルはないけど、[http://www.loudmouth-project.org/docs/api/loudmouth/ch01.html C API]を移しかえただけなので、
+ サンプルのloudmouthのコードそのまま持ってくれば動く。
- マニュアルはないけど、[http://www.loudmouth-project.org/docs/api/loudmouth/ch01.html C API]そのまま。
  
+ オウムがえしするだけならこんな感じ。
+ 
+ - [[gist:11760]]
+ 
+ コールバックの形式だけは普通にforeign-lambdaできないので、
+ ヘルパーマクロを使って、
+ 
+ {{{
+ (lm:define-message-handler
+  presence-cb
+  (conn mes data)
+  (begin ここにコールバックの内容))
+ 
+ (lm:call-with-message-handler
+   presence-cb #f #f
+   (lambda (handler)
+     (lm:connection-register-message-handler
+       conn handler
+       *LM-MESSAGE-TYPE-PRESENCE*
+       *LM-HANDLER-PRIORITY-LAST*)))
+ }}}
+ 
+ みたいに書く。
+ 
  コールバックの第一引数がvoid*なものだから、
  データの移送はかなり面倒なことに。
  これをscheme-objectにすると、gcされちゃう。
  
+ これを使ったtwitter->xmppボットは安定動作しているようなので、
+ モジュール部分だけ公開してみる。
- とりあえずこれを使ったtwitter->xmppボットは安定動作しているようなので、
- 公開してみる。
  
  CLだとcl-xmppなんてのがあって、
  asdf-installで簡単インストールできたりしてちょっと羨ましかったり。
+ 
+ - [[gist:10812]]: cl-xmppの例