Hiroyuki Ikezoe
poinc****@ikezo*****
2004年 4月 10日 (土) 10:02:29 JST
zoeです。 足永さんにダメだしされているKzIOの修正案を考えてみました。 あほみたいにシグナル発行しまくりのスタイルをやめて、通信開始関数の引数に コールバック関数を与えてやって、通信終了およびエラーの時にコールバック関 数を呼ぶようにしようと。 struct _KzIOClass { GObjectClass parent_class; /* -- signals -- */ void (*progress) (KzIO *io, gsize len, const gchar *buf); }; typedef void (* KzIOCompleteFunc) (KzIO *io, gboolean error, gpointer user_data); KzIO *kz_io_new (const gchar *uri); void kz_io_load_to_buffer (KzIO *io, KzIOCompleteFunc func, gpointer user_data); void kz_io_load_to_file (KzIO *io, const gchar *filename, KzIOCompleteFunc func, gpointer user_data); void kz_io_write (KzIO *io, const gchar *buffer, KzIOCompleteFunc func, gpointer user_data); gdouble kz_io_get_progress (KzIO *io); gsize kz_io_get_loaded_size (KzIO *io); gsize kz_io_get_file_size (KzIO *io); guint kz_io_get_lastmodified (KzIO *io); const gchar *kz_io_get_buffer (KzIO *io); void kz_io_stop (KzIO *io); こんな感じで。 今のメモリ読み込みモードはなくして、メモリに読み込みたい場合は kz_io_load_to_buffer() ファイルに保存したい時は kz_io_load_to_file() を使うと。 シグナル発行しない分すっきりしますし、パフォーマンスも少し上がると思うん ですが、どうでしょう?