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); }
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); } }
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); } }