Пример #1
0
 public static Monitor Monitor(SimEnvironment env)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     //Debug.Assert(monitor.Env.Equals(env));
     //Debug.Assert(monitor.Name == (name ?? Default.NameFor.Monitor));
     //Debug.Assert(monitor.Count == 0);
     return(new Monitor(env));
 }
Пример #2
0
 internal static void RemoveFromSuspendInfo(SimEnvironment env)
 {
     Debug.Assert(SuspendInfo.ContainsKey(env));
     lock (SuspendInfo)
     {
         SuspendInfo.Remove(env);
     }
 }
Пример #3
0
 public static Tally Tally(SimEnvironment env)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     //Debug.Assert(tally.Env.Equals(env));
     //Debug.Assert(tally.Name == (name ?? Default.NameFor.Tally));
     //Debug.Assert(tally.Count == 0);
     return(new Tally(env));
 }
Пример #4
0
 public static Call <T> Call <T>(this SimEnvironment env, IEnumerable <SimEvent> gen)
 {
     // ReSharper disable PossibleMultipleEnumeration
     Contract.Requires <ArgumentNullException>(env != null, ErrorMessages.NullEnvironment);
     Contract.Requires <ArgumentNullException>(gen != null && gen.GetEnumerator() != null, ErrorMessages.NullGenerator);
     Contract.Ensures(Contract.Result <Call <T> >() != null);
     return(new Call <T>(env, gen.GetEnumerator()));
     // ReSharper restore PossibleMultipleEnumeration
 }
Пример #5
0
 public static Container Container(SimEnvironment env)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     Contract.Ensures(ReferenceEquals(Contract.Result <Container>().Env, env));
     Contract.Ensures(Contract.Result <Container>().Capacity.Equals(Default.Capacity));
     Contract.Ensures(Contract.Result <Container>().Level.Equals(Default.Level));
     Contract.Ensures(Contract.Result <Container>().GetPolicy == Default.Policy);
     Contract.Ensures(Contract.Result <Container>().PutPolicy == Default.Policy);
     Contract.Ensures(!Contract.Result <Container>().GetQueue.Any());
     Contract.Ensures(!Contract.Result <Container>().PutQueue.Any());
     return(new Container(env, Default.Capacity, Default.Level, Default.Policy, Default.Policy));
 }
Пример #6
0
 public static Resource Resource(SimEnvironment env, int capacity)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     Contract.Requires <ArgumentOutOfRangeException>(capacity > 0);
     Contract.Ensures(ReferenceEquals(Contract.Result <Resource>().Env, env));
     Contract.Ensures(Contract.Result <Resource>().Capacity.Equals(capacity));
     Contract.Ensures(Contract.Result <Resource>().Count.Equals(0));
     Contract.Ensures(Contract.Result <Resource>().RequestPolicy == Default.Policy);
     Contract.Ensures(!Contract.Result <Resource>().RequestQueue.Any());
     Contract.Ensures(!Contract.Result <Resource>().Users.Any());
     return(new Resource(env, capacity, Default.Policy));
 }
Пример #7
0
        /// <summary>
        ///   Creates a new environment with a custom seed.
        /// </summary>
        /// <param name="seed">The seed used by the exposed random generator.</param>
        /// <returns>A new simulation environment.</returns>
        public static SimEnvironment Environment(int seed)
        {
            var env = new SimEnvironment(seed);

            env.RealTime.Locked = true;
            Debug.Assert(env.Now.Equals(0));
            Debug.Assert(env.Random.Seed == seed);
            lock (SuspendInfo)
            {
                SuspendInfo[env] = new Dictionary <SimProcess, SimEvent <object> >();
            }
            return(env);
        }
Пример #8
0
 public static Container Container(SimEnvironment env, double capacity, double level)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     Contract.Requires <ArgumentOutOfRangeException>(capacity > 0);
     Contract.Requires <ArgumentOutOfRangeException>(level >= 0 && level <= capacity);
     Contract.Ensures(ReferenceEquals(Contract.Result <Container>().Env, env));
     Contract.Ensures(Contract.Result <Container>().Capacity.Equals(capacity));
     Contract.Ensures(Contract.Result <Container>().Level.Equals(level));
     Contract.Ensures(Contract.Result <Container>().GetPolicy == Default.Policy);
     Contract.Ensures(Contract.Result <Container>().PutPolicy == Default.Policy);
     Contract.Ensures(!Contract.Result <Container>().GetQueue.Any());
     Contract.Ensures(!Contract.Result <Container>().PutQueue.Any());
     return(new Container(env, capacity, level, Default.Policy, Default.Policy));
 }
Пример #9
0
 public static Store <T> Store <T>(SimEnvironment env)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     Contract.Ensures(ReferenceEquals(Contract.Result <Store <T> >().Env, env));
     Contract.Ensures(Contract.Result <Store <T> >().Capacity.Equals(Default.Capacity));
     Contract.Ensures(Contract.Result <Store <T> >().Count.Equals(0));
     Contract.Ensures(Contract.Result <Store <T> >().GetPolicy == Default.Policy);
     Contract.Ensures(Contract.Result <Store <T> >().PutPolicy == Default.Policy);
     Contract.Ensures(Contract.Result <Store <T> >().ItemPolicy == Default.Policy);
     Contract.Ensures(!Contract.Result <Store <T> >().GetQueue.Any());
     Contract.Ensures(!Contract.Result <Store <T> >().PutQueue.Any());
     Contract.Ensures(!Contract.Result <Store <T> >().ItemQueue.Any());
     return(new Store <T>(env, Default.Capacity, Default.Policy, Default.Policy, Default.Policy));
 }
Пример #10
0
 public static FilterStore <T> FilterStore <T>(SimEnvironment env, int capacity)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     Contract.Requires <ArgumentOutOfRangeException>(capacity > 0);
     Contract.Ensures(ReferenceEquals(Contract.Result <FilterStore <T> >().Env, env));
     Contract.Ensures(Contract.Result <FilterStore <T> >().Capacity.Equals(capacity));
     Contract.Ensures(Contract.Result <FilterStore <T> >().Count.Equals(0));
     Contract.Ensures(Contract.Result <FilterStore <T> >().GetPolicy == Default.Policy);
     Contract.Ensures(Contract.Result <FilterStore <T> >().PutPolicy == Default.Policy);
     Contract.Ensures(Contract.Result <FilterStore <T> >().ItemPolicy == Default.Policy);
     Contract.Ensures(!Contract.Result <FilterStore <T> >().GetQueue.Any());
     Contract.Ensures(!Contract.Result <FilterStore <T> >().PutQueue.Any());
     Contract.Ensures(!Contract.Result <FilterStore <T> >().ItemQueue.Any());
     return(new FilterStore <T>(env, capacity, Default.Policy, Default.Policy, Default.Policy));
 }
Пример #11
0
 public static Store <T> Store <T>(SimEnvironment env, int capacity, WaitPolicy getPolicy, WaitPolicy putPolicy)
 {
     Contract.Requires <ArgumentNullException>(env != null);
     Contract.Requires <ArgumentOutOfRangeException>(capacity > 0);
     Contract.Requires <ArgumentOutOfRangeException>(Enum.IsDefined(typeof(WaitPolicy), getPolicy));
     Contract.Requires <ArgumentOutOfRangeException>(Enum.IsDefined(typeof(WaitPolicy), putPolicy));
     Contract.Ensures(ReferenceEquals(Contract.Result <Store <T> >().Env, env));
     Contract.Ensures(Contract.Result <Store <T> >().Capacity.Equals(capacity));
     Contract.Ensures(Contract.Result <Store <T> >().Count.Equals(0));
     Contract.Ensures(Contract.Result <Store <T> >().GetPolicy == getPolicy);
     Contract.Ensures(Contract.Result <Store <T> >().PutPolicy == putPolicy);
     Contract.Ensures(Contract.Result <Store <T> >().ItemPolicy == Default.Policy);
     Contract.Ensures(!Contract.Result <Store <T> >().GetQueue.Any());
     Contract.Ensures(!Contract.Result <Store <T> >().PutQueue.Any());
     Contract.Ensures(!Contract.Result <Store <T> >().ItemQueue.Any());
     return(new Store <T>(env, capacity, getPolicy, putPolicy, Default.Policy));
 }
Пример #12
0
 public static SimEvent Suspend(this SimEnvironment env)
 {
     return(SuspendInfo[env][env.ActiveProcess] = env.Event <object>());
 }
Пример #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="env"></param>
 /// <param name="steps"></param>
 internal SimProcess(SimEnvironment env, IEnumerator <SimEvent> steps) : base(env)
 {
     _steps = steps;
 }
Пример #14
0
 internal Dummy(SimEnvironment env) : base(env)
 {
 }
Пример #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="env"></param>
 internal SimEvent(SimEnvironment env)
 {
     _env = env;
 }