パターンのセットに対して構造を照合し、一致ごとに何らかのアクションを実行する必要があります。
パターンはワイルドカードをサポートする必要があり、受信構造と一致するパターンを特定する必要があります。例セット:
action=new_user email=*
action=del_user email=*
action=* email=*@gmail.com
action=new_user email=*@hotmail.com
これらのパターンはリアルタイムで追加/削除できます。何千もの接続が存在する可能性があり、それぞれに独自のパターンがあり、一致する構造を受け取ったことを各接続に通知する必要があります。パターンは完全に正規表現ではありません。文字列をワイルドカード * (任意の数の文字に単純に一致) と一致させる必要があるだけです。
サーバーが構造を持つメッセージ (メッセージ A と呼びましょう) を受信action=new_user email=testuser@gmail.com
し、パターン 1 と 3 がこのメッセージに一致していることを確認する必要がある場合、一致するパターンごとにアクションを実行する必要があります (この構造 A を対応する接続に送信します)。
これを最も効率的な方法で行うにはどうすればよいですか? このパターンを反復して 1 つずつチェックすることはできますが、これを行うためのより効率的でスレッドセーフな方法を探しています。チェックを減らすためにこれらのパターンをグループ化することはおそらく可能です..これを行う方法について何か提案はありますか?
UPD : 固定された「文字列」(実際には構造体) に対して複数のパターン (数千)を一致させる必要があることに注意してください。その逆ではありません。言い換えれば、与えられた構造Aにどのパターンが適合するかを見つけたい.