public ushort GetCount(RrKind rrKind) { try{ return(_dnsHeader.GetCount((int)rrKind)); } catch (IOException e) { //ここで例外が派生するのは、 設計上の問題 Util.RuntimeException(e.Message); return(0); } }
// 共通メソッド //リソースレコードのToString() private string Print(PacketDns p, RrKind rrKind, int n) { var o = p.GetRr(rrKind, n); if (rrKind == RrKind.QD) { return(o.ToString()); } return(Print(o)); }
//回答フィールドへの追加 //これを下記のように変更し、OneRRのコンストラクタを使用するようにする public void AddRr(RrKind rrKind, OneRr oneRr) { //名前の圧縮は、最後のgetBytes()で処理する var i = (int)rrKind; _ar[i].Add(oneRr); try{ var count = _dnsHeader.GetCount(i); _dnsHeader.SetCount(i, ++count); } catch (IOException) { Util.RuntimeException("PacketDns.addRR()"); } }
//フィールドの読み込み //RR_TYPEフィールドのno番目のデータを取得する public OneRr GetRr(RrKind rrKind, int no) { return _ar[(int) rrKind][no]; }
public ushort GetCount(RrKind rrKind) { try{ return _dnsHeader.GetCount((int) rrKind); } catch (IOException e){ //ここで例外が派生するのは、 設計上の問題 Util.RuntimeException(e.Message); return 0; } }
//回答フィールドへの追加 //これを下記のように変更し、OneRRのコンストラクタを使用するようにする public void AddRr(RrKind rrKind, OneRr oneRr) { //名前の圧縮は、最後のgetBytes()で処理する var i = (int) rrKind; _ar[i].Add(oneRr); try{ var count = _dnsHeader.GetCount(i); _dnsHeader.SetCount(i, ++count); } catch (IOException){ Util.RuntimeException("PacketDns.addRR()"); } }
// 共通メソッド //リソースレコードのToString() private string Print(PacketDns p, RrKind rrKind, int n) { var o = p.GetRr(rrKind, n); if (rrKind == RrKind.QD){ return o.ToString(); } return Print(o); }
//フィールドの読み込み //RR_TYPEフィールドのno番目のデータを取得する public OneRr GetRr(RrKind rrKind, int no) { return(_ar[(int)rrKind][no]); }
//レスポンス情報追加をまとめて記述 private void AppendRr(PacketDns packetDns, RrKind rrKind, OneRr oneRr) { Logger.Set(LogKind.Detail, null, 23, string.Format("[{0}] {1}", rrKind, oneRr)); //"Append RR" packetDns.AddRr(rrKind, oneRr); }