private static void Handle_Start (
MeshServerShell Dispatch, string[] args, int index) {
Start Options = new Start ();
var Registry = new Goedel.Registry.Registry ();
Options.Address.Register ("address", Registry, (int) TagType_Start.Address);
Options.MeshStore.Register ("mesh", Registry, (int) TagType_Start.MeshStore);
Options.PortalStore.Register ("mesh", Registry, (int) TagType_Start.PortalStore);
Options.Verify.Register ("verify", Registry, (int) TagType_Start.Verify);
// looking for parameter Param.Name}
if (index < args.Length && !IsFlag (args [index][0] )) {
// Have got the parameter, call the parameter value method
Options.Address.Parameter (args [index]);
index++;
}
#pragma warning disable 162
for (int i = index; i< args.Length; i++) {
if (!IsFlag (args [i][0] )) {
throw new System.Exception ("Unexpected parameter: " + args[i]);}
string Rest = args [i].Substring (1);
TagType_Start TagType = (TagType_Start) Registry.Find (Rest);
// here have the cases for what to do with it.
switch (TagType) {
case TagType_Start.MeshStore : {
int OptionParams = Options.MeshStore.Tag (Rest);
if (OptionParams>0 && ((i+1) < args.Length)) {
if (!IsFlag (args [i+1][0] )) {
i++;
Options.MeshStore.Parameter (args[i]);
}
}
break;
}
case TagType_Start.PortalStore : {
int OptionParams = Options.PortalStore.Tag (Rest);
if (OptionParams>0 && ((i+1) < args.Length)) {
if (!IsFlag (args [i+1][0] )) {
i++;
Options.PortalStore.Parameter (args[i]);
}
}
break;
}
case TagType_Start.Verify : {
int OptionParams = Options.Verify.Tag (Rest);
if (OptionParams>0 && ((i+1) < args.Length)) {
if (!IsFlag (args [i+1][0] )) {
i++;
Options.Verify.Parameter (args[i]);
}
}
break;
}
default : throw new System.Exception ("Internal error");
}
}
#pragma warning restore 162
Dispatch.Start (Options);
}