0

HTTP経由でRESTfulサーバーと通信する組み込みアプリケーションがあります。一部のサービスでは、 flexを使用して作成した非常に単純なレクサーを使用して解釈されるデータをクライアントに送信します。

現在、帯域幅の消費を減らすためにgzip圧縮レイヤーを追加しているところですが、メモリ要件のために現在のアーキテクチャに満足していません。最初にデータ全体をバッファに受け取り、次にバッファ全体を次のように解凍します。新しいバッファを作成してから、データ全体をフレックスにフィードします。

チャンク化されたデータをHTTPクライアントからzlibルーチンにフィードすることで、最初のステップと2番目のステップの間にメモリを節約できます。しかし、zlibチャンク出力とフレックス入力の間で同じことができるかどうか疑問に思っています。

現在、入力の分析にはyy_scan_bytesとのみを使用しています。yylexflexには、データの複数のチャンクをフィードする機能がありますyylexか?複数の入力バッファに関するドキュメントを読みましたが、役に立ちませんでした。

4

1 に答える 1

0

YY_INPUT正解のようです:

[スキャナー]が入力を取得する方法の性質は、YY_INPUTマクロを定義することで制御できます。YY_INPUT()の呼び出しシーケンスは、YY_INPUT(buf、result、max_size)です。そのアクションは、最大max_size文字を文字配列bufに配置し、整数変数の結果に、読み取られた文字数または定数YY_NULL(Unixシステムでは0)のいずれかを返して「EOF」を示すことです。

于 2011-12-09T11:27:58.383 に答える