internal void GetPortIndices(IPipeTicket ticket, IElement srcEl, IElement destEl, out int srcPortIndex, out int destPortIndex) { // get the port indices srcPortIndex = -1; destPortIndex = -1; srcEl.OutPortMgr.GetPortIndex(ticket.SrcPortId, out srcPortIndex); destEl.InPortMgr.GetPortIndex(ticket.DestPortId, out destPortIndex); }
internal void LoadNetworkPipeIntoView(INetworkPipe pipe, IPipeTicket ticket) { // get the element presenters for the source and target elements. IElementPresenter srcElPresenter = ElementPresenters[ticket.SrcElementId]; IElementPresenter destElPresenter = ElementPresenters[ticket.DestElementId]; // get the elements IElement srcEl = srcElPresenter.Element; IElement destEl = destElPresenter.Element; // get the port indices int srcPortIndex = -1; int destPortIndex = -1; GetPortIndices(ticket, srcEl, destEl, out srcPortIndex, out destPortIndex); if (destEl.InPortMgr.IsPortConnected(destPortIndex)) { // TODO throw new InvalidOperationException("Input ports can only have 1 pipe connected to them."); } // get the element views IElementView srcElView = srcElPresenter.View; IElementView destElView = destElPresenter.View; // create the instance of the view INetworkPipeView pipeView = CreateNetworkPipeView(); LoadNetworkPipePresenterAndModel(pipe, pipeView, srcElView, destElView, srcPortIndex, destPortIndex); }
/// <summary> /// Loads all unpersisted <see cref="IPipe"/> objects in the <see cref="WorkSpace"/> into the view. /// This method creates views and presenters for each pipe model, connects them, and adds them to the view. /// </summary> public void LoadPipesIntoView(IPipeTicket [] pipeTickets) { IPipe pipe = null; foreach (IPipeTicket ticket in pipeTickets) { pipe = WorkSpace.PipesMgr[ticket.PipeId]; if (pipe is IDataPipe) LoadDataPipeIntoView((IDataPipe)pipe, ticket); else LoadNetworkPipeIntoView((INetworkPipe)pipe, ticket); } }
public void Unpersist(out IPipeTicket[] pipeTickets) { pipeTickets = null; IWorkSpaceUnpersister persister = null; try { if (Reader == null) InitReader(FileName); using (var wpp = _provider.GetUnpersister<IWorkSpaceUnpersisterProvider>()) { persister = wpp.Create(WorkSpace, Format); persister.UnpersistProgressChanged += new UnpersistProgressChangedEventHandler<IWorkSpaceUnpersister, UnpersistProgressChangedEventArgs>(wsp_UnpersistProgressChanged); persister.UnpersistCompleted += new UnpersistCompletedEventHandler<IWorkSpaceUnpersister, UnpersistCompletedEventArgs>(wsp_UnpersistCompleted); Reader.Read(); // start the read to get to the 1st eleemnt Reader.MoveToContent(); persister.UnpersistWorkSpace(WorkSpace, Reader); pipeTickets = new IPipeTicket[WorkSpace.PipesMgr.Count]; persister.CopyPipeTicketsTo(pipeTickets, 0); } } catch (Exception ex) { _logger.Fatal(ex.Message, ex); throw; } finally { if (Reader != null) Reader.Close(); if (persister != null) { persister.UnpersistProgressChanged -= wsp_UnpersistProgressChanged; persister.UnpersistCompleted -= wsp_UnpersistCompleted; persister.Dispose(); } if (pipeTickets == null) pipeTickets = new IPipeTicket[0]; } }
internal IPipe ReConstitute(IPipeTicket ticket) { IPipe pipe = null; //TODO - should use container here using (PipeFactory fac = new PipeFactory()) { if (ticket.ContentType == BlobType.Data) pipe = fac.CreateDataPipe(ticket.PipeId); else if (ticket.ContentType == BlobType.Network) pipe = fac.CreateNetworkPipe(ticket.PipeId); } return pipe; }
public void CopyPipeTicketsTo(IPipeTicket[] array, int arrayIndex) { PipeTickets.Values.CopyTo(array, arrayIndex); }
internal void UnpersistWorkSpace(IWorkSpace workSpace, string fileName, WorkSpaceFormats format, out IPipeTicket[] pipeTickets) { pipeTickets = null; UnpersistMgr upMgr = new UnpersistMgr(null); try { upMgr.UnpersistProgressChanged += new UnpersistProgressChangedEventHandler<UnpersistMgr, UnpersistProgressChangedEventArgs>(upMgr_UnpersistProgressChanged); upMgr.UnpersistCompleted += new UnpersistCompletedEventHandler<UnpersistMgr, UnpersistCompletedEventArgs>(upMgr_UnpersistCompleted); upMgr.WorkSpace = workSpace; upMgr.FileName = fileName; upMgr.Format = format; upMgr.Unpersist(out pipeTickets); } catch (Exception ex) { _Logger.Fatal(ex.Message, ex); throw; } finally { if (upMgr != null) { upMgr.UnpersistProgressChanged -= upMgr_UnpersistProgressChanged; upMgr.UnpersistCompleted -= upMgr_UnpersistCompleted; ((IDisposable)upMgr).Dispose(); } } }