public void PushExclusive(Frame frame)
        {
            if (!RequiresExclusivity)
              {
            throw new CommunicationException(ApplicationId, "This method should only be used for clients requiring Exclusivity");
              }

              hosts.ForEach(client => client.HostService.CreateChannel().RunFrameExclusive(frame));
        }
 public TestEngineManager()
 {
     Status = new Frame()
       {
     LightSection = new LightSection() { Lights = new List<Light>() },
     FanSection = new FanSection() { Fans = new List<Fan>() },
     RumbleSection = new RumbleSection() { Rumbles = new List<Rumble>() }
       };
       Updated = new Dictionary<eComponentType, bool>()
     {
       {eComponentType.Light, false}, {eComponentType.Fan, false}, {eComponentType.Rumble, false}
     };
 }
        public FrameBuilder AddFrame()
        {
            if (currentFrame != null)
              {
            AddCurrentFrame();
              }

              // Setup current Frame
              currentFrame = new Frame();
              isRepeatedSpecified = false;

              return this;
        }
 public void RunFrameExclusive(Frame frame)
 {
     ServerTask.UpdateExclusive(frame);
 }
 public static void UpdateExclusive(Frame frame)
 {
     var scene = new amBXScene {Frames = new List<Frame> {frame}};
       exclusiveProcessor.Process(scene);
 }
 private bool FrameIsEmpty(Frame frame)
 {
     var section = frame.LightSection;
       return LightIsEmpty(section.GetComponentSectionInDirection(eDirection.East).GetLight()) &&
      LightIsEmpty(section.GetComponentSectionInDirection(eDirection.West).GetLight());
 }
 public void RunFrameExclusive(Frame frame)
 {
     throw new NotImplementedException();
 }
 private void ProcessFrame(Frame frame)
 {
     SceneLength += frame.Length;
       ProcessComponent(frame.LightSection);
       ProcessComponent(frame.FanSection);
       ProcessComponent(frame.RumbleSection);
 }