C++ を使用して、抽象プロトコル クライアント サーバー会話解析ライブラリを実装する必要があります。クライアントとサーバーの会話全体を含むファイルはありませんが、その場で解析する必要があります。次のインターフェースを実装する必要があります。
class parsing_class
{
  public:
  void on_data( const char* data, size_t len );
  //other functions
  private:
  size_t pos_;// current position in the data flow
  bool first_part_parsed_;
  bool second_part_parsed_;
  //... some more bool markers or something like vector< bool >
};
データは関数を介してクラスに渡されon_dataます。データ チャンクの長さは、呼び出しごとに異なります。私はプロトコルのパケット形式を知っており、会話がどのように編成されるべきかを知っているので、一部pos_を解析するのに十分なデータがあるかどうかを現在で判断できNthます。これで、実装は次のようになります。
void parsing_class::on_data( const char* data, size_t len )
{
   pos_ += len;
   if( pos > FIRST_PART_SIZE and !first_part_parsed_ )
     parse_first_part( data, len );
   if( pos > SECOND_PART_SIZE and !second_part_parsed_ )
     parse_second_part( data, len );
   //and so on..  
}
私が欲しいのは、このアルゴリズムを最適化する方法のヒントです。おそらく、これらの多数を避けるためですif(on_data非常に多くの回数が呼び出される可能性があり、そのたびにすべてのスイッチを通過する必要があります)。