private async Task WebSocketRequest(AspNetWebSocketContext context)
        {
            var socket = context.WebSocket;

            while (true)
            {
                var buffer = new ArraySegment <byte>(new byte[1024]);

                // Listen to client
                var result = await socket.ReceiveAsync(buffer, CancellationToken.None);

                //If input frame is cancelation frame, send close command.
                if (result.MessageType == WebSocketMessageType.Close)
                {
                    await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
                }
                else
                {
                    var receivedString = Encoding.UTF8.GetString(buffer.ToArray());

                    var builder       = new FormulaBuilder(receivedString);
                    var sendingString = builder.Build();

                    var bytes = Encoding.UTF8.GetBytes(sendingString);

                    await socket.SendAsync(new ArraySegment <byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);
                }
            }
        }
Beispiel #2
0
        public void TestOperationValidation()
        {
            // Arrange
            var input = @"<request><expression><operation>plus</operation><operand><const>20</const></operand><operand>
                        <expression><operation>bla</operation><operand><const>10</const></operand><operand><const>5</const></operand>
                        </expression></operand></expression></request>";
            // Act
            var builder = new FormulaBuilder(input);
            var result  = builder.Build();

            // Assert
            Approvals.Verify(result);
        }
        public static IFormulaBuilder BuilderForStringOrSerializedFormula(string formula)
        {
            var formulaBuilder = new FormulaBuilder();

            if (IsSerialized(formula))
            {
                formulaBuilder.SetFormulaComponentsFromSerialisedFormula(formula);
            }
            else
            {
                formulaBuilder.SetFormulaFromText(formula);
            }

            return formulaBuilder;
        }
        private static void tcpServer_ClientConnected(TcpClient client)
        {
            Console.WriteLine("Client connected: {0}", client.RemoteEndPoint);
            client.Received += (c, r) => Console.WriteLine("← Request received: {0} from client {1}", r, client.RemoteEndPoint);
            client.Sent     += (c, r) => Console.WriteLine("→ Response sent: {0} to client {1}", r, client.RemoteEndPoint);

            while (client.IsConnected)
            {
                var receivedString = client.ReceiveString(Encoding.UTF8);
                if (receivedString.Equals("DisconnectEvent") || string.IsNullOrEmpty(receivedString))
                {
                    client.Disconnect();
                    break;
                }

                var builder       = new FormulaBuilder(receivedString);
                var sendingString = builder.Build();

                client.SendString(sendingString, Encoding.UTF8);
            }
        }
Beispiel #5
0
        public static void Proc()
        {
            Sites sites;

            Sites.Load(out sites, new DbServer());
            DbServer.MarkNotNew();
            //编译公式
            Site   st;
            Sensor ss;
            int    i = 0;

            while (sites.GetAt(i++, out st))
            {
                int j = 0;
                while (st.GetAt(j++, out ss))
                {
                    string err = "";
                    ss.formulaDelegate = FormulaBuilder.TryCompile(ss.formula, out err);
                    if (err != "")
                    {
                        Log.Write("编译公式出错:" + err);
                        continue;
                    }
                }
            }
            //获取本机所有IP
            IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
            //获取服务器里所有的服务器IP
            Server server = DbServer.ReadServerConfig();
            bool   exists = ips.Any(s => s.ToString() == server.IP);

            if (exists)
            {
                //说明是本机
                if (server.IsEnable)
                {
                    serverThread = new Thread(delegate()
                    {
                        TcpServerComm tsc = new TcpServerComm(server, sites);
                        tsc.Start();
                    });
                    serverThread.Start();
                }
            }


            SitesComm sc = new SitesComm(sites);

            sc.Start();

            while (bWork)
            {
                //Thread.Sleep(10000);
                Thread.Sleep(1000);

                if (DbServer.IsNewConfig())
                {
                    sc.Stop();
                    Sites.Load(out sites, new DbServer());
                    sc.sites = sites;
                    DbServer.MarkNotNew();
                    sc.Start();
                }
            }
            sc.Stop();
        }
Beispiel #6
0
        private Molecule GetFormula(string seq, ExplicitSequenceMods mods, out double unexplainedMass)
        {
            var formula = new FormulaBuilder(_massCalc);
            var modMasses = GetModMasses(mods);
            formula.Append(modMasses._massModCleaveNFormula, modMasses._massModCleaveNExtra);
            formula.Append(modMasses._massModCleaveCFormula, modMasses._massModCleaveCExtra);
            for (int i = 0, len = seq.Length; i < len; i++)
            {
                char c = seq[i];

                formula.Append(AMINO_FORMULAS[c])
                       .Append(modMasses._aminoModFormulas[c], modMasses._aminoModMassesExtra[c]);
                // Terminal modifications
                if (i == 0)
                    formula.Append(modMasses._aminoNTermModFormulas[c], modMasses._aminoNTermModMassesExtra[c]);
                else if (i == len - 1)
                    formula.Append(modMasses._aminoCTermModFormulas[c], modMasses._aminoCTermModMassesExtra[c]);
            }
            if (mods != null)
            {
                foreach (ExplicitMod mod in mods.AllMods)
                {
                    double modUnexplainedMass;
                    string modFormula = GetModFormula(seq[mod.IndexAA], mod.Modification, out modUnexplainedMass);
                    formula.Append(modFormula, modUnexplainedMass);
                }
            }
            formula.Append("H2O"); // N-term = H, C-term = OH // Not L10N
            unexplainedMass = formula.UnexplainedMass;
            // CONSIDER: More efficient translation between builder and Molecure.
            //           Both contain a dictionary for atom counts.
            return Molecule.Parse(formula.ToString());
        }
Beispiel #7
0
 private void onDraw(object sender, EventArgs e)
 {
     formula = FormulaBuilder.BuildFromText(this.formulaBox.Text);
     PanelDrawing.Refresh();
 }
Beispiel #8
0
        private void buttonOK_Click(object sender, EventArgs e)
        {
            if (textBoxNum.Text.Length == 0)
            {
                MessageBox.Show("请输入编号!");
                return;
            }
            if (textBoxName.Text.Length == 0)
            {
                MessageBox.Show("请输入名称!");
                return;
            }
            if (comboBoxType.SelectedItem == null)
            {
                MessageBox.Show("请选择类型!");
                return;
            }

            uint   num = Convert.ToUInt32(textBoxNum.Text);
            Sensor ss;

            if (site.Get(num, out ss))
            {
                if (sensor == null || num != sensor.num)
                {
                    MessageBox.Show("编号已存在!");
                    return;
                }
            }
            if (sensor == null)
            {
                sensor = new Sensor(0, "", SENSOR_TYPE.WENDU, decimal.MinValue, decimal.MaxValue);
            }
            try
            {
                sensor.num        = num;
                sensor.name       = textBoxName.Text;
                sensor.type       = ((KeyValuePair <SENSOR_TYPE, string>)comboBoxType.SelectedItem).Key;
                sensor.alarmLow   = textBoxAlarmLow.Text.Length > 0 ? Convert.ToDecimal(textBoxAlarmLow.Text) : decimal.MinValue;
                sensor.alarmHigh  = textBoxAlarmHigh.Text.Length > 0 ? Convert.ToDecimal(textBoxAlarmHigh.Text) : decimal.MaxValue;
                sensor.interval   = Convert.ToInt32(textBoxInterval.Text);
                sensor.sensorDeep = Convert.ToDouble(textBoxSensorDeep.Text);
                sensor.daogui     = comboBoxDaogui.SelectedIndex;

                string ropeDepth = this.txtRopeDepth.Text.Trim();
                string wellDepth = this.txtWellDepth.Text.Trim();
                if (!string.IsNullOrEmpty(ropeDepth))
                {
                    sensor.ropeDepth = Convert.ToDouble(this.txtRopeDepth.Text.Trim());
                }

                if (!string.IsNullOrEmpty(wellDepth))
                {
                    sensor.wellDepth = Convert.ToDouble(this.txtWellDepth.Text.Trim());
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            string err;

            FormulaBuilder.TryCompile(textBoxFormula.Text, out err);
            if (err != "")
            {
                MessageBox.Show("公式编译失败:" + err);
                return;
            }
            sensor.formula = textBoxFormula.Text;

            this.DialogResult = DialogResult.OK;
        }
 public ProvidedNotAttributeBuilder(FormulaBuilder fb)
 {
     this.fb = fb;
 }
 public FormalSpecAttributeBuilder(FormulaBuilder fb)
 {
     this.fb = fb;
 }
Beispiel #11
0
 public RelaxedToAttributeBuilder(FormulaBuilder fb)
 {
     this.fb = fb;
 }