Esempio n. 1
0
 public object Clone()
 {
     //var newObject = (BehaviorInfo)this.MemberwiseClone();
     var newObject = new BehaviorInfo
     {
         ModuleName = ModuleName,
         Ip = Ip,
         Port = Port,
         BehaviorName = BehaviorName,
         FunctionName = FunctionName,
         Parameters = new Dictionary<string, object>(),
         ExecutionEvalExpression = ExecutionEvalExpression
     };
     foreach (var parameter in Parameters)
     {
         var value = parameter.Value as Dictionary<string, object>;
         var parameterDict = new Dictionary<string, object>();
         if (value != null)
         {
             foreach (var o in value)
             {
                 parameterDict.Add(o.Key, o.Value.ToString());
             }
         }
         newObject.Parameters.Add(parameter.Key, parameterDict);
     }
     return newObject;
     //return DeepCopyHelper.DeepCopy(this);
 }
Esempio n. 2
0
        public static void Execute(IBehaviorExecutionContext context, BehaviorInfo info)
        {
            if (context != null && info != null)
            {
                Log.InfoFormat("Behavior Execution : {0} - {1}", info.BehaviorName, info.FunctionName);

                context.UpdateBehaviorResponderInfo(info);
                context.SyncExecuteBehavior(info);
            }
        }
Esempio n. 3
0
        public static void SyncExecuteBehavior(BehaviorInfo behaviorInfo)
        {
            try
            {
                using (var ctx = NetMQContext.Create())
                {
                    using (var sock = ctx.CreateRequestSocket())
                    {
                        var ip = behaviorInfo.Ip;
                        var port = behaviorInfo.Port;
                        var behaviorName = behaviorInfo.BehaviorName;
                        var moduleName = behaviorInfo.ModuleName;

                        var addr = string.Format("{0}:{1}", ip, port);
                        Log.InfoFormat("Connecting to behavior server - Module: {0}, Address: {1}",
                            moduleName, addr);

                        sock.Connect(addr);
                        Log.InfoFormat("Connected to behavior server: {0}", addr);

                        //sock.Send(behaviorName);
                        sock.Send(JsonConvert.SerializeObject(behaviorInfo));
                        Log.InfoFormat("Sent behavior execution request: {0}", behaviorName);

                        var reply = sock.ReceiveString();
                        Log.InfoFormat("Behavior execution response: {0}", reply);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Motion Behavior Task error : {0}", ex.Message);
            }
        }