public MotionPermissionRequest Dequeue(MotionPermissionRequest request)
        {
            var edge = FindEdge(request.StartVertex, request.DestinationVertex);

            if (edge != null)
            {
                return(dictBusyEdges[edge].Dequeue());
            }
            return(null);
        }
        public bool Enqueue(MotionPermissionRequest request)
        {
            var edge = FindEdge(request.StartVertex, request.DestinationVertex);

            if (edge != null)
            {
                dictBusyEdges[edge].Enqueue(request);
            }
            return(edge != null);
        }
        public MotionPermissionRequest Peek(MotionPermissionRequest request)
        {
            var edge = FindEdge(request.StartVertex, request.DestinationVertex);
            MotionPermissionRequest peek;

            try
            {
                peek = dictBusyEdges[edge].Peek();
            }
            catch
            {
                peek = null;
            }
            return(peek);
        }
        public bool IsFree(MotionPermissionRequest request)
        {
            var edge = FindEdge(request.StartVertex, request.DestinationVertex);

            return((edge != null) ? dictBusyEdges[edge].Count == 0 : false);
        }
 public bool ContainsEdge(MotionPermissionRequest request)
 {
     return(FindEdge(request.StartVertex, request.DestinationVertex) != null);
 }