ここで 2 つの質問があります。
質問1:
-- thrift は内部クラスの機能を提供できますか? (次の例を参照してください)
――できれば、そのような機能を簡単に節約できますか?
スクライブ インターフェース (scribe/if/scribe.thrift) は次のとおりです。しかし、そのメッセージ フィールドは文字列のみであり、柔軟性が十分ではないと思います。
#!/usr/local/bin/thrift --cpp --php
## Copyright (c) 2007-2008 Facebook
...
...
## See accompanying file LICENSE or visit the Scribe site at:
## http://developers.facebook.com/scribe/
include "fb303/if/fb303.thrift"
namespace cpp scribe.thrift
enum ResultCode
{
OK,
TRY_LATER
}
struct LogEntry
{
1: string category,
2: string message
}
service scribe extends fb303.FacebookService
{
ResultCode Log(1: list<LogEntry> messages);
}
次のことができれば素晴らしいと思います(thrift自体がそのドキュメントに従って内部クラス機能を提供するかどうかさえわかりませんが、プロトコルバッファは間違いなく可能です)。
enum ResultCode
{
OK,
TRY_LATER
}
struct MyLogStructure {
1: string field_name;
2: string value;
}
struct LogEntry
{
1: string category,
2: MyLogStructure message
}
service scribe extends fb303.FacebookService
{
ResultCode Log(1: list<LogEntry> messages);
}
質問2:
-- スクライブは内部データ表現としてプロトコル バッファを簡単に使用できますか? (あまりコードを変更しないでください)
-- 上記の質問に対する答えが「いいえ」の場合、Google はその sribe 実装をオープンソース化しましたか?