public override void HandleRequest(HttpListenerContext context)
        {
            var q = context.Request.QueryString;

            try
            {
                var fids        = getIntArgArray(q.Get(KEY_FIXTURE_ID));
                var portStr     = getIntArgArray(q.Get(KEY_PORT));
                var addr        = q.Get(KEY_ADDRESS);
                var increment   = bool.Parse(q.Get(KEY_INCREMENT));
                var utilEnabled = bool.Parse(q.Get(KEY_UTIL_ENABLED));

                if (fids == null || portStr == null || addr == null)
                {
                    throw new ArgumentNullException("Some of fixture edit properties was null");
                }

                var port = new Port()
                {
                    Net      = portStr[0],
                    SubNet   = portStr[1],
                    Universe = portStr[2]
                };

                var address = new Address()
                {
                    DmxAddress = int.Parse(addr),
                    Port       = port.Clone()
                };

                var utilAddress = new Address()
                {
                    Port       = port.Clone(),
                    DmxAddress = int.Parse(q.Get(KEY_UTIL_ADDRESS))
                };

                var fixtures = StateManager.Instance.State.GetFixtures(fids);
                FixtureAddressSetter.SetDmxAddressFor(fixtures, address, increment);
                FixtureAddressSetter.SetUtilAddressFor(fixtures, utilAddress, increment);

                SetInfoMessage(
                    "Address for fixtures: " + Fixture.GetFixtureListNameString(fixtures)
                    + "is set to => "
                    + "address: " + address.ToString()
                    + "util address: " + utilAddress.ToString(),
                    IS_PART_OF_STATE,
                    Talker.Talk.GetSource());

                string state = StateManager.Instance.GetStateSerialized();
                WriteResponse(context, RestConst.RESPONSE_OK, RestConst.CONTENT_TEXT_JSON, state);
            }
            catch (Exception e)
            {
                SetErrorMessage(e.ToString(), IS_NOT_PART_OF_STATE, Talker.Talk.GetSource());
                WriteErrorMessage(context, e);
            }
        }
Ejemplo n.º 2
0
        public override void HandleRequest(HttpListenerContext context)
        {
            var            q        = context.Request.QueryString;
            List <Fixture> fixtures = new List <Fixture>();

            try
            {
                string name = q.Get(KEY_FIX_NAME);

                int  dmxAddress      = int.Parse(q.Get(KEY_ADDRESS));
                bool dmxUtilsEnabled = bool.Parse(q.Get(KEY_UTILS_ENABLED));

                var port = getPortFromArgs(q.Get(KEY_PORT));

                Address address = new Address()
                {
                    DmxAddress = int.Parse(q.Get(KEY_ADDRESS)),
                    Port       = port.Clone()
                };

                var utilsEnabled = bool.Parse(q.Get(KEY_UTILS_ENABLED));
                var utilAddress  = new Address()
                {
                    DmxAddress = int.Parse(q.Get(KEY_UTIL_ADDRESS)),
                    Port       = port.Clone()
                };

                bool increment = bool.Parse(q.Get(KEY_INCREMENT));

                //validate pixel and mode values
                var modes = GetFixtureModes(q.Get(KEY_MODES));
                var pp    = q.Get(KEY_PATCH_TYPE);
                ValidateModeValues(modes, getPixelPatch(pp));

                // create fixtures
                for (int i = 0; i < int.Parse(q.Get(KEY_COUNT)); i++)
                {
                    var fix = new Fixture(modes, getPixelPatch(pp));
                    fix.Name              = name + " " + i;
                    fix.UtilAddress       = utilAddress.Clone();
                    fix.IsDmxUtilsEnabled = dmxUtilsEnabled;
                    fixtures.Add(fix);
                }
                FixtureAddressSetter.SetDmxAddressFor(fixtures, address, increment);

                var dmxUtils = fixtures[0].DmxUtils;
                StateManager.Instance.State.FixturePool.AddRange(fixtures);

                SetMessage(
                    "Fixtures created: " + Fixture.GetFixtureInfoStr(fixtures) + ".",
                    LogLevel.INFO,
                    IS_PART_OF_STATE,
                    Talker.Talk.GetSource()
                    );

                string state = StateManager.Instance.GetStateSerialized();
                WriteResponse(context, RestConst.RESPONSE_OK, RestConst.CONTENT_TEXT_JSON, state);
            }
            catch (ArgumentException e) {
                SetErrorMessage(e.ToString(), IS_NOT_PART_OF_STATE, Talker.Talk.GetSource());
                WriteErrorMessage(context, e);
            }
        }