コード例 #1
0
 public BackgroundProcess(
     IMainWindowViewModel viewModel,
     ILinkContainer linkContainer,
     ISeparateProcessFactory factory
     )
 {
     _cameras       = viewModel.Cameras;
     _linkContainer = linkContainer;
     _consumers     = new List <ISeparateCameraProcess>();
     _factory       = factory;
 }
コード例 #2
0
ファイル: ServiceContext.cs プロジェクト: vogelb/ambeth
 public void AddLinkContainer(ILinkContainer linkContainer)
 {
     CheckNotDisposed();
     writeLock.Lock();
     try
     {
         if (linkContainers == null)
         {
             linkContainers = new List <ILinkContainer>();
         }
         linkContainers.Add(linkContainer);
     }
     finally
     {
         writeLock.Unlock();
     }
 }
コード例 #3
0
 public void BuildLinks(IEnumerable <ILinkSpec> links, ILinkContainer container)
 {
     foreach (var link in links)
     {
         var context = contextFactory.CreateContext(link);
         try
         {
             container.AddLink(link.Id, new Link()
             {
                 Href   = options.HrefTransformation?.Transform(context),
                 Rel    = options.RelTransformation?.Transform(context),
                 Method = link.HttpMethod.ToString()
             });
         }
         catch (Exception ex)
         {
             throw new LinkTransformationException($"Unable to transform link {link.Id}", ex, context);
         }
     }
 }
コード例 #4
0
        /// <summary>
        /// add the link
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnBuild_Click(object sender, EventArgs e)
        {
            MapLinks links = new MapLinks("[[121.2133820,31.285886],[121.2139638, 31.2865935]]", "[[121.2141660, 31.2866371]," +
                                          "[121.2160953, 31.2854671],[121.2163246, 31.2852151],[121.2163601, 31.2851393],[121.2163758, 31.2850646],[121.2163814, 31.2848733]," +
                                          " [121.2163925, 31.2840516],[121.2163873, 31.2839563],[121.2163765, 31.2838958],[121.2163440, 31.2837675],[121.2161880, 31.2834861]," +
                                          "[121.2152711, 31.2823441],[121.2151738, 31.2822313],[121.2150853, 31.2821396],[121.2149775, 31.2820633],[121.2148896, 31.2820111]," +
                                          "[121.2144256, 31.2818966],[121.2142475, 31.2819505],[121.2142216, 31.2819903],[121.2142148, 31.2820574],[121.2142168, 31.2821373]," +
                                          "[121.2142148, 31.2846036],[121.2142126, 31.2847458],[121.2141895, 31.2849460],[121.2140973, 31.2851871],[121.2138221, 31.2854833], " +
                                          "[121.2133835, 31.2857569]]", "[[121.2133550, 31.2856843],[121.2137920, 31.2854163],[121.2139446, 31.2852710],[121.2140375, 31.2851205]," +
                                          "[121.2141033, 31.2849395],[121.2141205, 31.2848163],[121.2141286, 31.2820856],[121.2141338, 31.2820461],[121.2141946, 31.2819106]," +
                                          "[121.2142898, 31.2818595],[121.2144180, 31.2818543],[121.2148526, 31.2819563],[121.2149904, 31.2820246],[121.2150815, 31.2820901]," +
                                          "[121.2151610, 31.2821546],[121.2152441, 31.2822470],[121.2162668, 31.2835153],[121.2163321, 31.2836178],[121.2163766, 31.2837161]," +
                                          "[121.2164089, 31.2838223],[121.2164310, 31.2839981],[121.2164246, 31.2849813],[121.2164263, 31.2850688],[121.2163846, 31.2852246]," +
                                          "[121.2163203, 31.2853258],[121.2162000, 31.2854486],[121.2141725, 31.2866793]]", "[[121.2139551,31.2866538],[121.2133464, 31.2858938]]",
                                          "[[121.2122708,31.2863276],[121.2131735, 31.2857866]]", "[[121.2132083,31.2858663],[121.2123150, 31.2864003]]");

            List <MapConnector> connectors = new List <MapConnector>();

            connectors.Add(new MapConnector(1, 1, 2, 1, 1, "[[121.2139761, 31.2866085],[121.2140386, 31.2866530],[121.2141176, 31.2866628]]"));
            connectors.Add(new MapConnector(2, 1, 1, 1, 1, "[[121.2133590, 31.2857876],[121.2133515, 31.2858090],[121.2133551, 31.2858465]]"));
            connectors.Add(new MapConnector(2, 1, 6, 1, 1, "[[121.2133313, 31.2857863],[121.2133009, 31.2858019],[121.2132711, 31.2858210]]"));
            connectors.Add(new MapConnector(3, 1, 4, 1, 1, "[[121.2141185, 31.2867008],[121.2140918, 31.2867055],[121.2140635, 31.2867065]]"));
            connectors.Add(new MapConnector(4, 1, 6, 1, 1, "[[121.2133193, 31.2858745],[121.2132875, 31.2858613],[121.2132538, 31.2858563]]"));
            connectors.Add(new MapConnector(4, 1, 3, 1, 1, "[[121.2132968, 31.2858205],[121.2132896, 31.2857678],[121.2133031, 31.2857371]]"));
            connectors.Add(new MapConnector(5, 1, 1, 1, 1, "[[121.2132478, 31.2857801],[121.2132943, 31.2857968],[121.2133323, 31.2858291]]"));
            connectors.Add(new MapConnector(5, 1, 3, 1, 1, "[[121.2132310, 31.2857565],[121.2132573, 31.2857410],[121.2132801, 31.2857261]]"));

            try
            {
                ILinkContainer linkCtn = VissimSim.net.Links;
                foreach (ILink link in linkCtn)
                {
                    linkCtn.RemoveLink(link);
                }

                for (int i = 0; i < links.Links.Count(); i++)
                {
                    object[] array = { 3.5 };
                    string   str   = "LineString(";
                    for (int j = 0; j < links.Links[i].nodes.Count(); j++)
                    {
                        List <double> loc1 = Moc(links.Links[i].nodes[j].gpsPot);
                        str += Convert.ToString(loc1[0]) + ' ' + Convert.ToString(loc1[1]) + ',';
                    }
                    str  = str.Remove(str.Length - 1, 1);
                    str += ")";

                    linkCtn.AddLink(links.Links[i].LinkNo, str, array);

                    Thread.Sleep(500); //sleep 500ms
                }


                for (int i = 0; i < connectors.Count(); i++)
                {
                    ILane  laneFrom = linkCtn.ItemByKey[connectors[i].FLinkId].Lanes.ItemByKey[connectors[i].FLaneId];
                    ILane  laneEnd  = linkCtn.ItemByKey[connectors[i].TLinkId].Lanes.ItemByKey[connectors[i].TLaneId];
                    double fromPos  = linkCtn.ItemByKey[connectors[i].FLinkId].AttValue["Length2D"];
                    double toPos    = 0;

                    string str = "LineString(";
                    for (int j = 0; j < connectors[i].link.nodes.Count(); j++)
                    {
                        List <double> loc1 = Moc(connectors[i].link.nodes[j].gpsPot);
                        str += Convert.ToString(loc1[0]) + ' ' + Convert.ToString(loc1[1]) + ',';
                    }
                    str  = str.Remove(str.Length - 1, 1);
                    str += ")";

                    linkCtn.AddConnector(Convert.ToInt32(connectors[i].FLinkId.ToString() + "000" + connectors[i].TLinkId.ToString()), laneFrom, fromPos, laneEnd, toPos, connectors[i].LaneNum, str);

                    Thread.Sleep(500); //sleep 500ms
                }

                foreach (ILink link in linkCtn)
                {
                    if (Convert.ToBoolean(link.AttValue["IsConn"]))
                    {
                        link.RecalculateSpline();
                    }
                }
            }
            catch (Exception ex)
            {
                VissimSim.vissim.Exit();
                MessageBox.Show(ex.ToString());
            }
            //object[] array = { 3.5, 3.5 };
            //    Console.WriteLine(array[0].ToString());
            //    ILink link = linkCtn.AddLink(42, "LINESTRING(1 1,2 2)", array);
            //    Console.WriteLine(Convert.ToString(link.AttValue["FromPos"]));
        }
コード例 #5
0
ファイル: ServiceContext.cs プロジェクト: vogelb/ambeth
        public void Dispose()
        {
            if (disposed || disposing)
            {
                return;
            }
            ILogger log;

            IServiceContext[] childrenCopy = null;
            writeLock.Lock();
            try
            {
                if (disposed || disposing)
                {
                    return;
                }
                log = GetService <ILoggerCache>().GetCachedLogger(this, typeof(ServiceContext));
                if (log.DebugEnabled)
                {
                    // Safe the toString-method for debugging purpose. Because this is not possible anymore if the context
                    // has been disposed and all bean-references have been cleared
                    toStringBackup = StringBuilderUtil.Concat(delegate(StringBuilder sb)
                    {
                        PrintContent(sb);
                    });
                }
                else
                {
                    toStringBackup = "n/a";
                }
                disposing = true;
                if (children != null && children.Count > 0)
                {
                    childrenCopy = new IServiceContext[children.Count];
                    children.CopyTo(childrenCopy, 0);
                    children.Clear();
                }
            }
            finally
            {
                writeLock.Unlock();
            }
            if (childrenCopy != null)
            {
                foreach (IServiceContext childContext in childrenCopy)
                {
                    try
                    {
                        childContext.Dispose();
                    }
                    catch (Exception e)
                    {
                        if (log.ErrorEnabled)
                        {
                            log.Error(e);
                        }
                    }
                }
            }
            writeLock.Lock();
            try
            {
                if (parent != null)
                {
                    parent.ChildContextDisposed(this);
                    parent = null;
                }
                if (this.linkContainers != null)
                {
                    IList <ILinkContainer> linkContainers = this.linkContainers;
                    this.linkContainers = null;
                    for (int a = linkContainers.Count; a-- > 0;)
                    {
                        ILinkContainer listenerContainer = linkContainers[a];
                        try
                        {
                            listenerContainer.Unlink();
                        }
                        catch (System.Exception e)
                        {
                            if (failOnError)
                            {
                                throw;
                            }
                            if (log.ErrorEnabled)
                            {
                                log.Error(e);
                            }
                        }
                    }
                }
                if (this.disposableObjects != null)
                {
                    IList <Object> disposableObjects = this.disposableObjects;
                    this.disposableObjects = null;
                    for (int a = disposableObjects.Count; a-- > 0;)
                    {
                        Object disposableObject = disposableObjects[a];
                        if (disposableObject is WeakReference)
                        {
                            disposableObject = ((WeakReference)disposableObject).Target;
                        }
                        if (disposableObject is IDisposableBean)
                        {
                            try
                            {
                                ((IDisposableBean)disposableObject).Destroy();
                            }
                            catch (System.Exception e)
                            {
                                if (failOnError)
                                {
                                    throw;
                                }
                                if (log.ErrorEnabled)
                                {
                                    log.Error(e);
                                }
                            }
                        }
                        else if (disposableObject is IDisposable)
                        {
                            try
                            {
                                ((IDisposable)disposableObject).Dispose();
                            }
                            catch (System.Exception e)
                            {
                                if (failOnError)
                                {
                                    throw;
                                }
                                if (log.ErrorEnabled)
                                {
                                    log.Error(e);
                                }
                            }
                        }
                        else if (disposableObject is IBackgroundWorkerParamDelegate <IServiceContext> )
                        {
                            try
                            {
                                ((IBackgroundWorkerParamDelegate <IServiceContext>)disposableObject).Invoke(this);
                            }
                            catch (System.Exception e)
                            {
                                if (failOnError)
                                {
                                    throw;
                                }
                                if (log.ErrorEnabled)
                                {
                                    log.Error(e);
                                }
                            }
                        }
                    }
                }

                if (nameToServiceDict != null)
                {
                    nameToServiceDict.Clear();
                }
                typeToServiceDict.Clear();
                if (postProcessors != null)
                {
                    postProcessors.Clear();
                }
                if (preProcessors != null)
                {
                    preProcessors.Clear();
                }
                beanContextFactory.Dispose();
            }
            finally
            {
                writeLock.Unlock();
                beanContextFactory = null;
                linkContainers     = null;
                nameToServiceDict  = null;
                postProcessors     = null;
                preProcessors      = null;
                parent             = null;
                disposed           = true;
                running            = false;
            }
        }