protected void DoPortCreated(string key, IQPort port) { if (OnPortCreated(key, port)) { RaisePortRequested(PortCreated, key, port); } }
protected void Process() { _ComponentContexts = new Hashtable(); foreach (IComponentGlyph component in _Components) { Log(System.Drawing.Color.Green, "{1} {0} = new {1} ();", component.Name, component.TypeName); Type type = Type.GetType(component.TypeName); if (type == null) { throw new NullReferenceException("Type [" + component.TypeName + "] not found"); } object hsm = HsmUtil.CreateHsm(type); _ComponentContexts.Add(component.Name, new ComponentContext(hsm, component)); } foreach (IPortLinkGlyph portLink in _Ports) { IComponentGlyph compFrom = GetComponent(portLink, TransitionContactEnd.From); IComponentGlyph compTo = GetComponent(portLink, TransitionContactEnd.To); Log(System.Drawing.Color.Blue, "{0}.{1}.QEvents += new QEventHandler ({2}.{3}.Receive);", compFrom.Name, portLink.FromPortName, compTo.Name, portLink.ToPortName); ComponentContext compCtxFrom = _ComponentContexts [compFrom.Name] as ComponentContext; ComponentContext compCtxTo = _ComponentContexts [compTo.Name] as ComponentContext; LinkPorts(compCtxFrom, compCtxTo, portLink); } foreach (DictionaryEntry de in _PortContext) { IQPort port = de.Key as IQPort; port.QEvents += new QEventHandler(port_QEvents); } }
protected void RaisePortRequested(PortCreatedHandler handler, string key, IQPort port) { if (handler != null) { handler(this, key, port); } }
protected void AddPortLinkToPortContext(IQPort port, IPortLinkGlyph portLink) { if (!_PortContext.Contains (port)) { _PortContext.Add (port, new ArrayList ()); } ArrayList list = _PortContext [port] as ArrayList; list.Add (portLink); }
protected void AddPortLinkToPortContext(IQPort port, IPortLinkGlyph portLink) { if (!_PortContext.Contains(port)) { _PortContext.Add(port, new ArrayList()); } ArrayList list = _PortContext [port] as ArrayList; list.Add(portLink); }
protected void LinkPorts(ComponentContext ctxFrom, ComponentContext ctxTo, IPortLinkGlyph portLink) { string fromPortName = portLink.FromPortName; string toPortName = portLink.ToPortName; IQPort portFrom = GetPort(ctxFrom, fromPortName); IQPort toPort = GetPort(ctxTo, toPortName); portFrom.QEvents += new QEventHandler(toPort.Receive); AddPortLinkToPortContext(portFrom, portLink); }
IQPort GetPort(ComponentContext ctx, string portName) { Type type = ctx.Hsm.GetType(); System.Reflection.PropertyInfo propInfo = type.GetProperty(portName); if (propInfo == null) { throw new NullReferenceException("Port [" + portName + "] not found on Component " + ctx.ComponentName + " - " + ctx.Hsm); } object port = propInfo.GetValue(ctx.Hsm, null); IQPort qport = port as IQPort; return(qport); }
public override void PreInit(GQHSM parentHSM) { base.PreInit(parentHSM); if (IsMultiPort) { _port = (IQPort)_parentHSM.CreateMultiPort(Name); } else { _port = _parentHSM.CreatePort(Name); } _fullName = parentHSM.GetName() + "." + Name; parentHSM.RegisterPort(this); }
public IQPort this[string key] { get { lock (_Ports.SyncRoot) { IQPort port = _Ports[key] as IQPort; if (null == port) { CreatePort(key); port = _Ports[key] as IQPort; } return(port); } } }
private void port_QEvents(IQPort port, IQEvent ev) { foreach (IPortLinkGlyph portLink in _Ports) { portLink.Selected = false; } if (_PortContext.Contains(port)) { ArrayList list = _PortContext [port] as ArrayList; foreach (IPortLinkGlyph portLink in list) { _AppForm.Log(System.Drawing.Color.DeepSkyBlue, "Port: " + portLink.ToPortName + "->" + portLink.FromPortName + " ev: " + ev + "\n"); portLink.Selected = true; } } DoRefresh(); }
public void Receive(IQPort fromPort, IQEvent ev) { ev = new QEvent(_Name, _Key, ev.QSignal, ev.QData, ev.QSent); _Qhsm.AsyncDispatch(ev); }
protected void RaisePortRequested(PortCreatedHandler handler, string key, IQPort port) { if (handler != null) { handler (this, key, port); } }
protected virtual bool OnPortCreated(string key, IQPort port) { return(true); }
private void port_QEvents(IQPort port, IQEvent ev) { foreach (IPortLinkGlyph portLink in _Ports) { portLink.Selected = false; } if (_PortContext.Contains (port)) { ArrayList list = _PortContext [port] as ArrayList; foreach (IPortLinkGlyph portLink in list) { _AppForm.Log (System.Drawing.Color.DeepSkyBlue, "Port: " + portLink.ToPortName + "->" + portLink.FromPortName + " ev: " + ev + "\n"); portLink.Selected = true; } } DoRefresh (); }
protected void DoPortCreated(string key, IQPort port) { if (OnPortCreated (key, port)) { RaisePortRequested (PortCreated, key, port); } }
public void Receive(IQPort fromPort, IQEvent ev) { ev = new QEvent (_Name, _Key, ev.QSignal, ev.QData, ev.QSent); _Qhsm.AsyncDispatch (ev); }
protected virtual bool OnPortCreated(string key, IQPort port) { return true; }