コード例 #1
0
 public void ProcessRequest(MIGClientRequest request, MIGInterfaceCommand migcmd)
 {
     switch (migcmd.command)
     {
     case "Events.Push":
         //TODO: implemet security and trust mechanism
         string      objstream = new StreamReader(request.InputStream).ReadToEnd();
         ModuleEvent mev       = JsonConvert.DeserializeObject <ModuleEvent>(objstream);
         //
         Module mod = _hg.Modules.Find(delegate(Module o)
         {
             return(o.Domain == mev.Module.Domain && o.Address == mev.Module.Address);
         });
         if (mod == null)
         {
             mod = mev.Module;
             _hg.Modules.Add(mod);
         }
         else
         {
             Utility.ModuleParameterSet(mod, mev.Parameter.Name, mev.Parameter.Value);
         }
         // "<ip>:<port>" remote endpoint port is passed as the first argument from the remote point itself
         mod.RoutingNode = request.RequestOrigin + (migcmd.GetOption(0) != "" ? ":" + migcmd.GetOption(0) : "");
         //
         _hg.LogBroadcastEvent(mev.Module.Domain, mev.Module.Address, request.RequestOrigin, mev.Parameter.Name, mev.Parameter.Value);
         _hg.RouteParameterChangedEvent(request.RequestOrigin, mod, mev.Parameter);
         break;
     }
 }