//サーバ(OneServer)の生成 private void AddServer(Conf conf, OnePlugin onePlugin) { var protocol = (ProtocolKind)conf.Get("protocolKind"); //ProtocolKind protocol = ProtocolKind.ValueOf((int) conf.Get("protocolKind")); BindAddr bindAddr = (BindAddr)conf.Get("bindAddress2"); if (bindAddr.BindStyle != BindStyle.V4Only) { var oneBind = new OneBind(bindAddr.IpV6, protocol); var o = onePlugin.CreateServer(kernel, conf, oneBind); if (o != null) { Ar.Add((OneServer)o); } } if (bindAddr.BindStyle != BindStyle.V6Only) { var oneBind = new OneBind(bindAddr.IpV4, protocol); var o = onePlugin.CreateServer(kernel, conf, oneBind); if (o != null) { Ar.Add((OneServer)o); } } }
public void 文字列でnewしたBindAddrオブジェクトをToStringで確認する(string bindStr, string expected) { //setUp var sut = new BindAddr(bindStr); //exercise var actual = sut.ToString(); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void Totostringによる確認() { //setUp var expected = "V4Only,INADDR_ANY,IN6ADDR_ANY_INIT"; var sut = new BindAddr(); //exercise var actual = sut.ToString(); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void パラメータBindStyle_ipv4_ipv6でnewしたBindAddrオブジェクトをToStringで確認する( BindStyle bindStyle, string ipV4, string ipV6, string expected) { //setUp var sut = new BindAddr(bindStyle, new Ip(ipV4), new Ip(ipV6)); //exercise var actual = sut.ToString(); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void CheckCompetitionによる競合があるかどうかの確認(string bindStr1, string bindStr2, bool expected) { //setUp var sut = new BindAddr(bindStr1); var target = (bindStr2 == null) ? null : new BindAddr(bindStr2); //exercise var actual = sut.CheckCompetition(target); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void Equalsによる同一確認(string bindStr1, string bindStr2, bool expected) { //setUp var sut = new BindAddr(bindStr1); var target = (bindStr2 == null) ? null : new BindAddr(bindStr2); //exercise var actual = sut.Equals(target); //verify Assert.That(actual, Is.EqualTo(expected)); }
public byte[] ToBytes() { var buffer = new List <byte>(); buffer.Add(Version); buffer.Add((byte)ReplyCode); buffer.Add(Reserved); buffer.Add((byte)AddrType); buffer.AddRange(BindAddr.GetAddressBytes()); buffer.AddRange(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(BindPort)).Skip(2)); return(buffer.ToArray()); }
public void CreateOneBindで生成される数の確認(string bindStr, ProtocolKind protocolKind, int count, string firstOneBind) { //stUp var sut = new BindAddr(bindStr); var expected = count; //exercise var ar = sut.CreateOneBind(protocolKind); var actual = ar.Length; //verify Assert.That(actual, Is.EqualTo(expected)); }
// 初期化 private void Initialize(ListPlugin listPlugin) { Ar.Clear(); //Java fix if (kernel.RunMode == RunMode.Remote) { return; } foreach (OneOption op in kernel.ListOption) { if (!op.UseServer) { //サーバオプション以外は対象外にする continue; } //プラグイン情報の検索 OnePlugin onePlugin = listPlugin.Get(op.NameTag); // if (onePlugin == null) { // //設計上の問題 // Util.RuntimeException(string.Format("ListServer.initialize() listPlugin.get(%s)==null", op.getNameTag())); // } if (op.NameTag.IndexOf("Web-") == 0) { //既に同一ポートで仮想サーバがリストされている場合はサーバの生成は行わない bool find = false; int port = (int)op.GetValue("port"); BindAddr bindAddr = (BindAddr)op.GetValue("bindAddress2"); foreach (OneServer sv in Ar) { if (sv.NameTag.IndexOf("Web-") == 0) { OneOption o = kernel.ListOption.Get(sv.NameTag); if (o != null) { //同一ポートの設定が既にリストされているかどうか if (port == (int)o.GetValue("port")) { // バインドアドレスが競合しているかどうか if (bindAddr.CheckCompetition((BindAddr)o.GetValue("bindAddress2"))) { find = true; break; } } } } } if (!find) { AddServer(new Conf(op), onePlugin); //サーバ(OneServer)生成 } } else { AddServer(new Conf(op), onePlugin); //サーバ(OneServer)生成 } } }
//出力ファイル(Option.ini)からの入力用<br> //不正な文字列があった場合は、無効行として無視される<br> public bool FromReg(String str) { if (str == null) { Value = null; return(false); } switch (OneCtrl.GetCtrlType()) { case CtrlType.Dat: CtrlDat ctrlDat = (CtrlDat)OneCtrl; Dat dat = new Dat(ctrlDat.CtrlTypeList); if (!dat.FromReg(str)) { Value = null; return(false); } //Ver5.8.7 Java fix Datの中にComboBoxが存在する場合の旧バージョンの変換 foreach (var d in dat) { for (int i = 0; i < ctrlDat.ListVal.Count; i++) { if (ctrlDat.ListVal[i].OneCtrl.GetCtrlType() == CtrlType.ComboBox) { int val; if (!int.TryParse(d.StrList[i], out val)) { //Ver5.7.x以前のデータ OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, ctrlDat.ListVal[i].OneCtrl); if (dmy.FromRegConv(d.StrList[i])) { d.StrList[i] = dmy.ToReg(false); } } } } } Value = dat; break; case CtrlType.CheckBox: try { Value = Boolean.Parse(str); } catch { Value = false; return(false); } break; case CtrlType.Font: Value = null; var tmp = str.Split(','); if (tmp.Length == 3) { try{ var family = new FontFamily(tmp[0]); var size = (float)Convert.ToDouble(tmp[1]); var style = (FontStyle)Enum.Parse(typeof(FontStyle), tmp[2]); Value = new Font(family, size, style); }catch (Exception) { Value = null; } } if (Value == null) { return(false); } break; case CtrlType.Memo: Value = Util.SwapStr("\t", "\r\n", str); break; case CtrlType.File: case CtrlType.Folder: case CtrlType.TextBox: Value = str; break; case CtrlType.Hidden: try{ Value = Crypt.Decrypt(str); } catch (Exception) { Value = ""; return(false); } break; case CtrlType.Radio: try{ Value = Int32.Parse(str); }catch (Exception) { Value = 0; return(false); } if ((int)Value < 0) { Value = 0; return(false); } break; case CtrlType.ComboBox: int max = ((CtrlComboBox)OneCtrl).Max; try { var n = Int32.Parse(str); if (n < 0 || max <= n) { Value = 0; return(false); } Value = n; } catch { Value = 0; //Ver5.9.2 Ver5.7.x以前のデータのコンバート OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, OneCtrl); if (dmy.FromRegConv(str)) { int n; Int32.TryParse(dmy.ToReg(false), out n); if (n < 0 || max <= n) { Value = 0; return(false); } Value = n; } return(false); } break; case CtrlType.Int: try { Value = Int32.Parse(str); } catch { Value = 0; return(false); } break; case CtrlType.BindAddr: try{ Value = new BindAddr(str); } catch (ValidObjException) { Value = 0; return(false); } break; case CtrlType.AddressV4: try{ Value = new Ip(str); } catch (ValidObjException) { Value = null; return(false); } break; case CtrlType.TabPage: case CtrlType.Group: break; default: Value = 0; return(false); // "実装されていないCtrlTypeが指定されました OneVal.fromReg()" } return(true); }