StreamRelay.NET.exe の文字コード変換機能を呼び出しているプラグインの実装方法について説明する
StreamRelay.NET.exe/StreamRelay.NET.x86.exeには、いくつかの機能をプラグインとして実装できるようにインターフェイスを公開している。
今回は、文字コード(主に自作した文字コード)変換機能のためのインターフェイスを使って、プラグインを作成する方法を記述する。
既存のプラグイン
UTF-5とかなんちゃって文字コードを実装している(sEncoding.dll)のラッパとなっているぐらいかな。
プラグイン的には、このあたり。
- Plugins\Plugin.sEncoding.dll
実装したプラグインの呼び出され方
基本的には、実装済みの文字コードの一覧(リスティング)とか、文字コード名の文字列を指定して、
Encodingオブジェクトを返したり・・・そんな感じで呼び出されるような感じ。
他のプラグインからも呼び出されたりするだろう。
という感じ。
実装するインターフェイス
以下のインターフェイスを継承したクラスを実装すればよい
- IPlugin.dll 中の jp.dip.rocketeer.Plugins.IPluginCharset インターフェイス
このクラス一つだけ実装すればよい。
jp.dip.rocketeer.Plugins.IPluginCharset インターフェイスで定義しているメソッド/プロパティ
実装する必要があるのは以下
jp.dip.rocketeer.Plugins.IPluginCharsetインターフェイスで定義されているのは、以下のとおり
- Dictionary<String, String> ListDescription()
- 引数文字列などを返す。基本的は「文字コード名(String)」「文字コード名(String)」というKeyもValueも同じ値のディクショナリでよいと思う。使うのはKeyの方だけど。
- Encoding CreateEncoding(String name, ref String errMsg)
- 名称から文字コードのオブジェクト(Encoding クラスのインスタンス)の実体を作成する。「name」で指定した文字コード(System.Text.Encoding)(おそらくListDescription()のKeyの方が渡されると思う)を返す。自担当のものでなければnullを返す。もしエラーがあるならerrMsgに入れる。
- Dictionary CreateAllEncoding()
- 全ての文字コードを返す
jp.dip.rocketeer.Plugins.IPluginBaseインターフェイスで定義されている分については、インターフェイス IPluginBase についてを参照