Exemple #1
0
 public static Exception NoCSRF()
 {
     return(new Exception(RS.get(ResourceKey.ERRORS_NoCSRF)));
 }
Exemple #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            double R1, R2, R3, R4, R5, RS, RP;

            try
            {
                R1 = Convert.ToDouble(textBox1.Text);
            }
            catch
            {
                R1 = 0;
            }
            try
            {
                R2 = Convert.ToDouble(textBox2.Text);
            }
            catch
            {
                R2 = 0;
            }
            try
            {
                R3 = Convert.ToDouble(textBox3.Text);
            }
            catch
            {
                R3 = 0;
            }
            try
            {
                R4 = Convert.ToDouble(textBox4.Text);
            }
            catch
            {
                R4 = 0;
            }
            try
            {
                R5 = Convert.ToDouble(textBox5.Text);
            }
            catch
            {
                R5 = 0;
            }

            RS = R1 + R2 + R3 + R4 + R5;

            if (R1 == 0)
            {
                R1 = double.PositiveInfinity;
            }
            if (R2 == 0)
            {
                R2 = double.PositiveInfinity;
            }
            if (R3 == 0)
            {
                R3 = double.PositiveInfinity;
            }
            if (R4 == 0)
            {
                R4 = double.PositiveInfinity;
            }
            if (R5 == 0)
            {
                R5 = double.PositiveInfinity;
            }
            RP = 1 / (1 / R1 + 1 / R2 + 1 / R3 + 1 / R4 + 1 / R5);

            label6.Text = " Answer Series " + RS.ToString("0.00");
            label7.Text = " Answer Parallel " + RP.ToString("0.00");
        }
Exemple #3
0
        protected override async Task <HttpResponseMessage> CreateItemPutResponse(FileSystemInfoBase info, string localFilePath, bool itemExists)
        {
            // If repository is empty then there is no commit id and no master branch so we don't create any branch; we just init the repo.
            if (_currentEtag != null)
            {
                HttpResponseMessage errorResponse;
                if (!PrepareBranch(itemExists, out errorResponse))
                {
                    return(errorResponse);
                }
            }
            else
            {
                // Initialize or re-initialize repository
                _repository.Initialize();
            }

            // Save file
            try
            {
                // Get the query parameters
                QueryParameters parameters = new QueryParameters(this.Request);

                using (Stream fileStream = GetFileWriteStream(localFilePath, fileExists: itemExists))
                {
                    try
                    {
                        await Request.Content.CopyToAsync(fileStream);
                    }
                    catch (Exception ex)
                    {
                        Tracer.TraceError(ex);
                        HttpResponseMessage conflictResponse = Request.CreateErrorResponse(
                            HttpStatusCode.Conflict, RS.Format(Resources.VfsController_WriteConflict, localFilePath, ex.Message),
                            ex);
                        return(conflictResponse);
                    }
                }

                // Use to track whether our rebase applied updates from master.
                bool updateBranchIsUpToDate = true;

                // Commit to local branch
                bool commitResult = _repository.Commit(parameters.Message, authorName: null);
                if (!commitResult)
                {
                    HttpResponseMessage noChangeResponse = Request.CreateResponse(HttpStatusCode.NoContent);
                    noChangeResponse.Headers.ETag = CreateEtag(_repository.CurrentId);
                    return(noChangeResponse);
                }

                bool rebasing = false;
                if (_currentEtag != null)
                {
                    try
                    {
                        // Only rebase if VFS branch isn't up-to-date already
                        if (!_repository.DoesBranchContainCommit(VfsUpdateBranch, MasterBranch))
                        {
                            // Rebase to get updates from master while checking whether we get a conflict
                            rebasing = true;
                            updateBranchIsUpToDate = _repository.Rebase(MasterBranch);
                        }

                        // Switch content back to master
                        _repository.UpdateRef(VfsUpdateBranch);
                    }
                    catch (CommandLineException commandLineException)
                    {
                        Tracer.TraceError(commandLineException);

                        if (rebasing)
                        {
                            // The rebase resulted in a conflict. We send the conflicted version to the client so that the user
                            // can see the conflicts and resubmit.
                            _cleanupRebaseConflict = true;
                            HttpResponseMessage conflictResponse = Request.CreateResponse(HttpStatusCode.Conflict);
                            _readStream = new RepositoryItemStream(this, GetFileReadStream(localFilePath));
                            conflictResponse.Content = new StreamContent(_readStream, BufferSize);
                            conflictResponse.Content.Headers.ContentType = _conflictMediaType;
                            return(conflictResponse);
                        }
                        else
                        {
                            HttpResponseMessage updateErrorResponse =
                                Request.CreateErrorResponse(HttpStatusCode.InternalServerError, RS.Format(Resources.VfsScmUpdate_Error, commandLineException.Message));
                            return(updateErrorResponse);
                        }
                    }
                }

                // If item does not already exist then we return 201 Created. Otherwise, as a successful commit could result
                // in a non-conflicting merge we send back the committed version so that a client
                // can get the latest bits. This means we use a 200 OK response instead of a 204 response.
                HttpResponseMessage successFileResponse = null;
                if (itemExists)
                {
                    if (updateBranchIsUpToDate)
                    {
                        successFileResponse = Request.CreateResponse(HttpStatusCode.NoContent);
                    }
                    else
                    {
                        successFileResponse         = Request.CreateResponse(HttpStatusCode.OK);
                        _readStream                 = new RepositoryItemStream(this, GetFileReadStream(localFilePath));
                        successFileResponse.Content = new StreamContent(_readStream, BufferSize);
                        successFileResponse.Content.Headers.ContentType = MediaTypeMap.GetMediaType(info.Extension);
                    }
                }
                else
                {
                    successFileResponse = Request.CreateResponse(HttpStatusCode.Created);
                }

                // Get current commit ID
                string currentId = _repository.CurrentId;

                // Deploy changes unless request indicated to not deploy
                if (!parameters.NoDeploy)
                {
                    DeployResult result = await DeployChangesAsync(currentId);

                    if (result != null && result.Status != DeployStatus.Success)
                    {
                        HttpResponseMessage deploymentErrorResponse =
                            Request.CreateErrorResponse(HttpStatusCode.InternalServerError, RS.Format(Resources.VfsScmController_DeploymentError, result.StatusText));
                        return(deploymentErrorResponse);
                    }
                }

                // Set updated etag for the file
                successFileResponse.Headers.ETag = CreateEtag(currentId);
                return(successFileResponse);
            }
            catch (Exception ex)
            {
                Tracer.TraceError(ex);
                HttpResponseMessage errorResponse = Request.CreateErrorResponse(HttpStatusCode.Conflict,
                                                                                RS.Format(Resources.VfsController_WriteConflict, localFilePath, ex.Message), ex);
                return(errorResponse);
            }
        }
Exemple #4
0
        private void Search_Click(object sender, EventArgs e)
        {
            string a;

            RS.Refresh();


            if (RS.SelectedValue.ToString() == "Paid")
            {
                a = "1)";
            }
            else if (RS.SelectedValue.ToString() == "Not-Paid")
            {
                a = "0)";
            }
            else
            {
                a = "0 OR Rent_Statues = 1)";
            }



            string b;

            b  = " AND Rent_Amount >" + RAN.Value.ToString();
            a += b;


            if (Collecter.SelectedValue != null)
            {
                b  = " AND Rent_CollecterId = " + Collecter.SelectedValue.ToString();
                a += b;
            }

            if (DueS.Value != null)
            {
                b  = " And Rent_DueDate <= '" + DueS.Value.ToString("yyyy-MM-dd") + "'";
                a += b;
            }

            if (DDA.Value != null)
            {
                b  = " And Rent_DueDate >= '" + DDA.Value.ToString("yyyy-MM-dd") + "'";
                a += b;
            }

            if (Units.SelectedValue != null)
            {
                b  = " And Unit_Rents_UnitId = " + Units.SelectedValue.ToString();
                a += b;
            }

            if (tenants.SelectedValue != null)
            {
                b  = " And Unit_Rents_TenantId = " + tenants.SelectedValue.ToString();
                a += b;
            }

            if (BCC.SelectedValue != null)
            {
                b  = " And Unit_BuildingNo = " + BCC.SelectedValue.ToString();
                a += b;
            }

            DataTable dt1 = contobj.GetRentsByStat(a);

            dataGridView1.DataSource = dt1;
            if (dt1 != null)
            {
                dataGridView1.Columns[4].Visible    = false;
                dataGridView1.Columns[5].Visible    = false;
                dataGridView1.Columns[6].Visible    = false;
                dataGridView1.Columns[7].Visible    = false;
                dataGridView1.Columns[8].Visible    = false;
                dataGridView1.Columns[9].Visible    = false;
                dataGridView1.Columns[10].Visible   = false;
                dataGridView1.Columns[11].Visible   = false;
                dataGridView1.Columns[12].Visible   = false;
                dataGridView1.Columns[13].Visible   = false;
                dataGridView1.Columns[14].Visible   = false;
                dataGridView1.Columns[15].Visible   = false;
                dataGridView1.Columns[16].Visible   = false;
                dataGridView1.Columns[17].Visible   = false;
                dataGridView1.Columns[0].HeaderText = "Id";
                dataGridView1.Columns[1].HeaderText = "Amount";
                dataGridView1.Columns[2].HeaderText = "Due Date";
                dataGridView1.Columns[3].HeaderText = "Payment Statues";

                /* dataGridView1.Columns[4].HeaderText = "Collecter Id";
                 * dataGridView1.Columns[5].HeaderText = "Lease Id";
                 * dataGridView1.Columns[6].HeaderText = "Tenant";
                 * dataGridView1.Columns[7].HeaderText = "Unit";
                 * dataGridView1.Columns[17].HeaderText = "Building ID";*/
            }

            dataGridView1.Refresh();
            if (sender == Search)
            {
                MessageBox.Show("Search Done!!");
            }
        }
Exemple #5
0
 private void Show(byte[] bytes)
 {
     RS.Write(true);
     Write(bytes);
 }
        private static string ValidateArguments(HttpContent content, long maxMessageSize, bool throwOnError)
        {
            Contract.Assert(content != null, "content cannot be null.");
            if (maxMessageSize < MimeMultipartParser.MinMessageSize)
            {
                if (throwOnError)
                {
                    throw new ArgumentOutOfRangeException("maxMessageSize", maxMessageSize, RS.Format(Properties.Resources.ArgumentMustBeGreaterThanOrEqualTo, MimeMultipartParser.MinMessageSize));
                }
                else
                {
                    return(null);
                }
            }

            MediaTypeHeaderValue contentType = content.Headers.ContentType;

            if (contentType == null)
            {
                if (throwOnError)
                {
                    throw new ArgumentException(RS.Format(Properties.Resources.ReadAsMimeMultipartArgumentNoContentType, typeof(HttpContent).Name, "multipart/"), "content");
                }
                else
                {
                    return(null);
                }
            }

            if (!contentType.MediaType.StartsWith("multipart", StringComparison.OrdinalIgnoreCase))
            {
                if (throwOnError)
                {
                    throw new ArgumentException(RS.Format(Properties.Resources.ReadAsMimeMultipartArgumentNoMultipart, typeof(HttpContent).Name, "multipart/"), "content");
                }
                else
                {
                    return(null);
                }
            }

            string boundary = null;

            foreach (NameValueHeaderValue p in contentType.Parameters)
            {
                if (p.Name.Equals("boundary", StringComparison.OrdinalIgnoreCase))
                {
                    boundary = FormattingUtilities.UnquoteToken(p.Value);
                    break;
                }
            }

            if (boundary == null)
            {
                if (throwOnError)
                {
                    throw new ArgumentException(RS.Format(Properties.Resources.ReadAsMimeMultipartArgumentNoBoundary, typeof(HttpContent).Name, "multipart", "boundary"), "content");
                }
                else
                {
                    return(null);
                }
            }

            return(boundary);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="HttpStatusLineParser"/> class.
        /// </summary>
        /// <param name="httpResponse"><see cref="HttpUnsortedResponse"/> instance where the response line properties will be set as they are parsed.</param>
        /// <param name="maxStatusLineSize">Maximum length of HTTP header.</param>
        public HttpStatusLineParser(HttpUnsortedResponse httpResponse, int maxStatusLineSize)
        {
            // The minimum length which would be an empty header terminated by CRLF
            if (maxStatusLineSize < MinStatusLineSize)
            {
                throw new ArgumentOutOfRangeException("maxStatusLineSize", maxStatusLineSize, RS.Format(Properties.Resources.ArgumentMustBeGreaterThanOrEqualTo, MinStatusLineSize));
            }

            if (httpResponse == null)
            {
                throw new ArgumentNullException("httpResponse");
            }

            _httpResponse        = httpResponse;
            _maximumHeaderLength = maxStatusLineSize;
        }
Exemple #8
0
        /// <summary>
        /// Attempts to get an expression for an index parameter.
        /// </summary>
        /// <param name="indexes">The operation indexes parameter.</param>
        /// <param name="expression">A <see cref="Expression"/> to be initialized to the index expression if the operation is successful, otherwise an error expression.</param>
        /// <returns>true the operation is successful, false otherwise.</returns>
        private static bool TryGetIndexExpression(DynamicMetaObject[] indexes, out Expression expression)
        {
            if (indexes.Length == 1 && indexes[0] != null && indexes[0].Value != null)
            {
                DynamicMetaObject index = indexes[0];
                Type indexType          = indexes[0].Value.GetType();

                switch (Type.GetTypeCode(indexType))
                {
                case TypeCode.Char:
                case TypeCode.Int16:
                case TypeCode.UInt16:
                case TypeCode.Byte:
                case TypeCode.SByte:
                    Expression argExp  = Expression.Convert(index.Expression, typeof(object));
                    Expression typeExp = Expression.Constant(typeof(int));
                    expression = Expression.Convert(Expression.Call(_changeTypeMethodInfo, new Expression[] { argExp, typeExp }), typeof(int));
                    return(true);

                case TypeCode.Int32:
                case TypeCode.String:
                    expression = index.Expression;
                    return(true);
                }

                expression = Expression.Throw(Expression.Constant(new ArgumentException(RS.Format(Properties.Resources.InvalidIndexType, indexType))), typeof(object));
                return(false);
            }

            expression = Expression.Throw(Expression.Constant(new ArgumentException(Properties.Resources.NonSingleNonNullIndexNotSupported)), typeof(object));
            return(false);
        }
Exemple #9
0
        /// <summary>
        /// 记录到文件
        /// </summary>
        /// <param name="message"></param>
        private static void RecordLog(string type, string message, string page = null)
        {
            var isNeedRecordLog = System.Configuration.ConfigurationManager.AppSettings[RS.get(ResourceKey.SETTINGS_RecordOAuthLog)];
            var need            = true;

            if (isNeedRecordLog != null)
            {
                bool.TryParse(isNeedRecordLog, out need);
            }
            if (need)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("====== Log Start ======");
                sb.AppendLine("Time: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"));
                sb.AppendLine("Type: " + type);
                if (page != null)
                {
                    sb.AppendLine("Page: " + page);
                }
                sb.AppendLine("Message: " + message);
                sb.AppendLine("====== Log End ======");
                sb.AppendLine();

                File.AppendAllText(HttpContext.Current.Server.MapPath("~/OAuthLogin.log"), sb.ToString());
            }
        }
Exemple #10
0
        public static Task <HttpRequestMessage> ReadAsHttpRequestMessageAsync(this HttpContent content, string uriScheme, int bufferSize)
        {
            if (content == null)
            {
                throw new ArgumentNullException("content");
            }

            if (uriScheme == null)
            {
                throw new ArgumentNullException("uriScheme");
            }

            if (!Uri.CheckSchemeName(uriScheme))
            {
                throw new ArgumentException(RS.Format(Properties.Resources.HttpMessageParserInvalidUriScheme, uriScheme, typeof(Uri).Name), "uriScheme");
            }

            if (bufferSize < MinBufferSize)
            {
                throw new ArgumentOutOfRangeException("bufferSize", bufferSize, RS.Format(Properties.Resources.ArgumentMustBeGreaterThanOrEqualTo, MinBufferSize));
            }

            HttpMessageContent.ValidateHttpMessageContent(content, true, true);

            return(content.ReadAsStreamAsync().Then(stream =>
            {
                HttpUnsortedRequest httpRequest = new HttpUnsortedRequest();
                HttpRequestHeaderParser parser = new HttpRequestHeaderParser(httpRequest);
                ParserState parseStatus;

                byte[] buffer = new byte[bufferSize];
                int bytesRead = 0;
                int headerConsumed = 0;

                while (true)
                {
                    try
                    {
                        bytesRead = stream.Read(buffer, 0, buffer.Length);
                    }
                    catch (Exception e)
                    {
                        throw new IOException(Properties.Resources.HttpMessageErrorReading, e);
                    }

                    try
                    {
                        parseStatus = parser.ParseBuffer(buffer, bytesRead, ref headerConsumed);
                    }
                    catch (Exception)
                    {
                        parseStatus = ParserState.Invalid;
                    }

                    if (parseStatus == ParserState.Done)
                    {
                        return CreateHttpRequestMessage(uriScheme, httpRequest, stream, bytesRead - headerConsumed);
                    }
                    else if (parseStatus != ParserState.NeedMoreData)
                    {
                        throw new IOException(RS.Format(Properties.Resources.HttpMessageParserError, headerConsumed, buffer));
                    }
                }
            }));
        }
Exemple #11
0
        /// <summary>
        /// <see cref="HttpContent"/> implementation which provides a byte range view over a stream used to generate HTTP
        /// 206 (Partial Content) byte range responses. If none of the requested ranges overlap with the current extend
        /// of the selected resource represented by the <paramref name="content"/> parameter then an
        /// <see cref="InvalidByteRangeException"/> is thrown indicating the valid Content-Range of the content.
        /// </summary>
        /// <param name="content">The stream over which to generate a byte range view.</param>
        /// <param name="range">The range or ranges, typically obtained from the Range HTTP request header field.</param>
        /// <param name="mediaType">The media type of the content stream.</param>
        /// <param name="bufferSize">The buffer size used when copying the content stream.</param>
        public ByteRangeStreamContent(Stream content, RangeHeaderValue range, MediaTypeHeaderValue mediaType, int bufferSize)
        {
            if (content == null)
            {
                throw new ArgumentNullException("content");
            }
            if (!content.CanSeek)
            {
                throw new ArgumentException("content", RS.Format(Resources.ByteRangeStreamNotSeekable, typeof(ByteRangeStreamContent).Name));
            }
            if (range == null)
            {
                throw new ArgumentNullException("range");
            }
            if (mediaType == null)
            {
                throw new ArgumentNullException("mediaType");
            }
            if (bufferSize < MinBufferSize)
            {
                throw new ArgumentOutOfRangeException("bufferSize", bufferSize, RS.Format(Resources.ArgumentMustBeGreaterThanOrEqualTo, MinBufferSize));
            }
            if (!range.Unit.Equals(SupportedRangeUnit, StringComparison.OrdinalIgnoreCase))
            {
                throw new ArgumentException(RS.Format(Resources.ByteRangeStreamContentNotBytesRange, range.Unit, SupportedRangeUnit), "range");
            }

            try
            {
                // If we have more than one range then we use a multipart/byteranges content type as wrapper.
                // Otherwise we use a non-multipart response.
                if (range.Ranges.Count > 1)
                {
                    // Create Multipart content and copy headers to this content
                    MultipartContent rangeContent = new MultipartContent(ByteRangesContentSubtype);
                    _byteRangeContent = rangeContent;

                    foreach (RangeItemHeaderValue rangeValue in range.Ranges)
                    {
                        try
                        {
                            ByteRangeStream rangeStream   = new ByteRangeStream(content, rangeValue);
                            HttpContent     rangeBodyPart = new StreamContent(rangeStream, bufferSize);
                            rangeBodyPart.Headers.ContentType  = mediaType;
                            rangeBodyPart.Headers.ContentRange = rangeStream.ContentRange;
                            rangeContent.Add(rangeBodyPart);
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            // We ignore range errors until we check that we have at least one valid range
                        }
                    }

                    // If no overlapping ranges were found then stop
                    if (!rangeContent.Any())
                    {
                        ContentRangeHeaderValue actualContentRange = new ContentRangeHeaderValue(content.Length);
                        string msg = RS.Format(Resources.ByteRangeStreamNoneOverlap, range.ToString());
                        throw new InvalidByteRangeException(actualContentRange, msg);
                    }
                }
                else if (range.Ranges.Count == 1)
                {
                    try
                    {
                        ByteRangeStream rangeStream = new ByteRangeStream(content, range.Ranges.First());
                        _byteRangeContent = new StreamContent(rangeStream, bufferSize);
                        _byteRangeContent.Headers.ContentType  = mediaType;
                        _byteRangeContent.Headers.ContentRange = rangeStream.ContentRange;
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        ContentRangeHeaderValue actualContentRange = new ContentRangeHeaderValue(content.Length);
                        string msg = RS.Format(Resources.ByteRangeStreamNoOverlap, range.ToString());
                        throw new InvalidByteRangeException(actualContentRange, msg);
                    }
                }
                else
                {
                    throw new ArgumentException(Resources.ByteRangeStreamContentNoRanges, "range");
                }

                // Copy headers from byte range content so that we get the right content type etc.
                foreach (KeyValuePair <string, IEnumerable <string> > header in _byteRangeContent.Headers)
                {
                    Headers.TryAddWithoutValidation(header.Key, header.Value);
                }

                _content = content;
                _start   = content.Position;
            }
            catch
            {
                if (_byteRangeContent != null)
                {
                    _byteRangeContent.Dispose();
                }
                throw;
            }
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 1 ""
            this.Write("");

            #line default
            #line hidden

            #line 6 ""
            this.Write("#include \"");

            #line default
            #line hidden

            #line 6 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.SimulatorFileName(Network)));

            #line default
            #line hidden

            #line 6 ""
            this.Write(".hpp\"\n\n// The names of all signals\nstd::string ");

            #line default
            #line hidden

            #line 9 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 9 ""
            this.Write("_SIGNAL_NAMES[] = {\n");

            #line default
            #line hidden

            #line 10 ""
            foreach (var signal in RS.DriverSignals.Concat(RS.VerifySignals))
            {
                var cpptype = RS.TypeScope.GetType(signal);
                if (cpptype.IsArray)
                {
                    var eltype = cpptype.ElementName;
                    var length = (int)RS.GetArrayLength(signal).DefaultValue;
                    for (var i = 0; i < length; i++)
                    {
            #line default
            #line hidden

            #line 17 ""
                        this.Write("    \"");

            #line default
            #line hidden

            #line 17 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.TestBenchSignalName(signal)));

            #line default
            #line hidden

            #line 17 ""
                        this.Write("(");

            #line default
            #line hidden

            #line 17 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden

            #line 17 ""
                        this.Write(")\",\n");

            #line default
            #line hidden

            #line 18 ""
                    }

            #line default
            #line hidden

            #line 19 ""
                }
                else
                {
            #line default
            #line hidden

            #line 20 ""
                    this.Write("    \"");

            #line default
            #line hidden

            #line 20 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TestBenchSignalName(signal)));

            #line default
            #line hidden

            #line 20 ""
                    this.Write("\",\n");

            #line default
            #line hidden

            #line 21 ""
                }

            #line default
            #line hidden

            #line 22 ""
            }

            #line default
            #line hidden

            #line 23 ""
            this.Write("};\n\n");

            #line default
            #line hidden

            #line 25 ""
            foreach (var process in Network.Processes)
            {
                var members = process
                              .SharedVariables.Cast <AST.DataElement>()
                              .Union(process.SharedSignals)
                              //.Where(x => RS.TypeScope.GetType(x).IsArray)
                              .Where(x => (x.DefaultValue is SME.AST.ArrayCreateExpression) || (x.DefaultValue is Array));
                foreach (var v in members)
                {
                    var rt       = RS.TypeScope.GetType(v);
                    var eltype   = rt.ElementName;
                    var arraylen = RS.GetArrayLength(v).DefaultValue;


            #line default
            #line hidden

            #line 36 ""
                    this.Write("const ");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 36 ""
                    this.Write(" init_");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process)));

            #line default
            #line hidden

            #line 36 ""
                    this.Write("_");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(v.Name)));

            #line default
            #line hidden

            #line 36 ""
                    this.Write("[");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 36 ""
                    this.Write("] = ");

            #line default
            #line hidden

            #line 36 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(v)));

            #line default
            #line hidden

            #line 36 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 37 ""
                }

            #line default
            #line hidden

            #line 38 ""
            }

            #line default
            #line hidden

            #line 39 ""
            this.Write("\n\n");

            #line default
            #line hidden

            #line 41 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 41 ""
            this.Write("::");

            #line default
            #line hidden

            #line 41 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 41 ""
            this.Write("() \n    :\n");

            #line default
            #line hidden

            #line 43 ""
            foreach (var bus in Network.Busses)
            {
            #line default
            #line hidden

            #line 44 ""
                this.Write("        bus_");

            #line default
            #line hidden

            #line 44 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(bus)));

            #line default
            #line hidden

            #line 44 ""
                this.Write("(),\n");

            #line default
            #line hidden

            #line 45 ""
            }

            #line default
            #line hidden

            #line 46 ""
            foreach (var process in Network.Processes)
            {
                var busses  = process.InputBusses.Concat(process.OutputBusses).Concat(process.InternalBusses).Distinct().OrderBy(x => x.Name).ToArray();
                var members = process.SharedVariables.Cast <AST.DataElement>().Union(process.SharedSignals).ToArray();


            #line default
            #line hidden

            #line 51 ""
                this.Write("        proc_");

            #line default
            #line hidden

            #line 51 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process)));

            #line default
            #line hidden

            #line 51 ""
                this.Write("(\n");

            #line default
            #line hidden

            #line 52 ""
                foreach (var bus in busses)
                {
            #line default
            #line hidden

            #line 53 ""
                    this.Write("            &bus_");

            #line default
            #line hidden

            #line 53 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(bus)));

            #line default
            #line hidden

            #line 53 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture((bus == busses.Last() & members.Length == 0) ? "" : ", "));

            #line default
            #line hidden

            #line 53 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 54 ""
                }

            #line default
            #line hidden

            #line 55 ""
                foreach (var v in members)
                {
                    var initializer = RS.Renderer.GetInitializer(v);
                    if (!string.IsNullOrWhiteSpace(initializer))
                    {
                        var rt = RS.TypeScope.GetType(v);
                        if (rt.IsArray)
                        {
                            var eltype   = rt.ElementName;
                            var arraylen = RS.GetArrayLength(v).DefaultValue;



            #line default
            #line hidden

            #line 64 ""
                            this.Write("            ");

            #line default
            #line hidden

            #line 64 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 64 ""
                            this.Write(",\n");

            #line default
            #line hidden

            #line 65 ""


                            if ((v.DefaultValue is SME.AST.ArrayCreateExpression) || v.DefaultValue is Array)
                            {
            #line default
            #line hidden

            #line 68 ""
                                this.Write("            init_");

            #line default
            #line hidden

            #line 68 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process)));

            #line default
            #line hidden

            #line 68 ""
                                this.Write("_");

            #line default
            #line hidden

            #line 68 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(v.Name)));

            #line default
            #line hidden

            #line 68 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ","));

            #line default
            #line hidden

            #line 68 ""
                                this.Write("\n");

            #line default
            #line hidden

            #line 69 ""
                            }
                            else
                            {
            #line default
            #line hidden

            #line 70 ""
                                this.Write("            new ");

            #line default
            #line hidden

            #line 70 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 70 ""
                                this.Write("[");

            #line default
            #line hidden

            #line 70 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 70 ""
                                this.Write("]()");

            #line default
            #line hidden

            #line 70 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ","));

            #line default
            #line hidden

            #line 70 ""
                                this.Write("\n");

            #line default
            #line hidden

            #line 71 ""
                            }

            #line default
            #line hidden

            #line 72 ""
                        }
                        else
                        {
            #line default
            #line hidden

            #line 73 ""
                            this.Write("            ");

            #line default
            #line hidden

            #line 73 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(initializer));

            #line default
            #line hidden

            #line 73 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ","));

            #line default
            #line hidden

            #line 73 ""
                            this.Write("\n");

            #line default
            #line hidden

            #line 74 ""
                        }

            #line default
            #line hidden

            #line 75 ""
                    }

            #line default
            #line hidden

            #line 76 ""
                }

            #line default
            #line hidden

            #line 77 ""
                this.Write("        ),\n");

            #line default
            #line hidden

            #line 78 ""
            }

            #line default
            #line hidden

            #line 79 ""
            this.Write("        trace_input(NULL),\n        input_line(),\n        cycle(0)\n{\n\n}\n\nsize_t ");

            #line default
            #line hidden

            #line 86 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 86 ""
            this.Write(@"::RunSimulation(const char* inputfile)
{
    LoadTraceInput(inputfile);

    // Ignore the reset cycle
    DriveFromTraceInput();

    while(true) {
        if (!DriveFromTraceInput()) {
            size_t res = cycle;
            Stop();
            return res;
        }
        OnTick();
        VerifyTrace();
        FinishCycle();
    }
}

void ");

            #line default
            #line hidden

            #line 105 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 105 ""
            this.Write(@"::LoadTraceInput(const char* inputfile)
{
    if (trace_input != NULL)
       throw MessageException(""Already have an input trace file open"");

    // Open the trace file and validate the headers
    trace_input = new std::ifstream(inputfile);
    if (trace_input->bad()) {
        trace_input->close();
        throw MessageException(""Trace input file not found, or not able to open"");
    }

    if (!std::getline(*trace_input, input_line)) {
        throw MessageException(""Trace input file was empty"");
    }

    if (cycle != 0) {
        throw MessageException(""Cannot load input file after the simulation has started"");
    }

    std::string token;
    std::istringstream headerlinestream(input_line);
    size_t field = 0;
    while(std::getline(headerlinestream, token, ',')) {
        if (token.compare(");

            #line default
            #line hidden

            #line 129 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 129 ""
            this.Write("_SIGNAL_NAMES[field]) != 0) {\n\n            std::stringstream sstm;\n            ss" +
                       "tm << \"Field #\" << field << \" should be named \" << ");

            #line default
            #line hidden

            #line 132 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 132 ""
            this.Write("_SIGNAL_NAMES[field] << \" but is named \" << token << \", the trace file cannot be " +
                       "used\";\n            throw MessageException(sstm.str());\n        }\n        field++" +
                       ";\n    }\n\n    cycle = 0;\n}\n\n");

            #line default
            #line hidden

            #line 141 ""
            var driver_signal_count = 0;

            #line default
            #line hidden

            #line 142 ""
            this.Write("\nbool ");

            #line default
            #line hidden

            #line 143 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 143 ""
            this.Write(@"::DriveFromTraceInput()
{
    if (trace_input == NULL) {
        throw MessageException(""Trace input file is not loaded"");
    }

    if (!std::getline(*trace_input, input_line)) {
        return false;
    }

    size_t i;
    std::string token;
    std::istringstream valuestream(input_line);
    size_t field = 0;

");

            #line default
            #line hidden

            #line 158 ""
            foreach (var signal in RS.DriverSignals)
            {
                var cpptype = RS.TypeScope.GetType(signal);
                if (cpptype.IsArray)
                {
                    var eltype = cpptype.ElementName;
                    var length = (int)RS.GetArrayLength(signal).DefaultValue;
                    driver_signal_count += length;


            #line default
            #line hidden

            #line 165 ""
                    this.Write("    for (i = 0; i < ");

            #line default
            #line hidden

            #line 165 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(length));

            #line default
            #line hidden

            #line 165 ""
                    this.Write("; i++) {\n        if (!std::getline(valuestream, token, \',\')) {\n            std::s" +
                               "tringstream sstm;\n            sstm << \"Unexpected end-of-line in cycle \" << cycl" +
                               "e << \", field \" << field << \", ");

            #line default
            #line hidden

            #line 168 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 168 ""
                    this.Write("[\" << i << \"]\" << std::endl;\n            throw MessageException(sstm.str());\n    " +
                               "    }\n        if (token.compare(\"U\") != 0)\n            bus_");

            #line default
            #line hidden

            #line 172 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 172 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 172 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 172 ""
                    this.Write("(i, parse_");

            #line default
            #line hidden

            #line 172 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 172 ""
                    this.Write("(token));            \n        field++;\n    }\n");

            #line default
            #line hidden

            #line 175 ""
                }
                else
                {
                    driver_signal_count++;


            #line default
            #line hidden

            #line 179 ""
                    this.Write("    if (!std::getline(valuestream, token, \',\')) {\n        std::stringstream sstm;" +
                               "\n        sstm << \"Unexpected end-of-line in cycle \" << cycle << \", field \" << fi" +
                               "eld << \", ");

            #line default
            #line hidden

            #line 181 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 181 ""
                    this.Write("[\" << i << \"]\" << std::endl;\n        throw MessageException(sstm.str());\n    }\n  " +
                               "  if (token.compare(\"U\") != 0)\n        bus_");

            #line default
            #line hidden

            #line 185 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 185 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 185 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 185 ""
                    this.Write("(parse_");

            #line default
            #line hidden

            #line 185 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 185 ""
                    this.Write("(token));\n    field++;\n");

            #line default
            #line hidden

            #line 187 ""
                }

            #line default
            #line hidden

            #line 188 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 189 ""
            }

            #line default
            #line hidden

            #line 190 ""
            this.Write("\n    return true;\n}\n\nvoid ");

            #line default
            #line hidden

            #line 194 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 194 ""
            this.Write("::FinishCycle() \n{\n    cycle++;\n");

            #line default
            #line hidden

            #line 197 ""
            if (Network.Busses.Any(x => x.IsClocked))
            {
            #line default
            #line hidden

            #line 198 ""
                this.Write("        // Propagate clocked busses\n");

            #line default
            #line hidden

            #line 199 ""
                foreach (var bus in Network.Busses.Where(x => x.IsClocked))
                {
            #line default
            #line hidden

            #line 200 ""
                    this.Write("        bus_");

            #line default
            #line hidden

            #line 200 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 200 ""
                    this.Write(".Propagate();\n");

            #line default
            #line hidden

            #line 201 ""
                }

            #line default
            #line hidden

            #line 202 ""
            }

            #line default
            #line hidden

            #line 203 ""
            this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 205 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 205 ""
            this.Write("::OnTick()\n{\n\n");

            #line default
            #line hidden

            #line 208 ""
            foreach (var p in Network.Processes.Where(x => x.IsClocked).Distinct())
            {
            #line default
            #line hidden

            #line 209 ""
                this.Write("    proc_");

            #line default
            #line hidden

            #line 209 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(p)));

            #line default
            #line hidden

            #line 209 ""
                this.Write(".onTick();\n");

            #line default
            #line hidden

            #line 210 ""
            }

            #line default
            #line hidden

            #line 211 ""
            foreach (var b in Network.Busses.Where(x => x.IsClocked).Distinct())
            {
            #line default
            #line hidden

            #line 212 ""
                this.Write("    bus_");

            #line default
            #line hidden

            #line 212 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(b)));

            #line default
            #line hidden

            #line 212 ""
                this.Write(".propagate_signals();\n");

            #line default
            #line hidden

            #line 213 ""
            }

            #line default
            #line hidden

            #line 214 ""
            this.Write("\n\n");

            #line default
            #line hidden

            #line 216 ""
            foreach (var n in Graph.ExecutionPlan)
            {
                var pn = GetProcess(n.Item);
                if (pn != null && !pn.IsClocked)
                {
            #line default
            #line hidden

            #line 220 ""
                    this.Write("    proc_");

            #line default
            #line hidden

            #line 220 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(pn)));

            #line default
            #line hidden

            #line 220 ""
                    this.Write(".onTick();\n");

            #line default
            #line hidden

            #line 221 ""
                }

            #line default
            #line hidden

            #line 222 ""
                foreach (var b in n.Item.OutputBusses.Distinct())
                {
            #line default
            #line hidden

            #line 223 ""
                    this.Write("    bus_");

            #line default
            #line hidden

            #line 223 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 223 ""
                    this.Write(".forward_signals();\n");

            #line default
            #line hidden

            #line 224 ""
                }

            #line default
            #line hidden

            #line 225 ""
                foreach (var b in n.PropagateAfter)
                {
            #line default
            #line hidden

            #line 226 ""
                    this.Write("    bus_");

            #line default
            #line hidden

            #line 226 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 226 ""
                    this.Write(".propagate_signals();\n");

            #line default
            #line hidden

            #line 227 ""
                }

            #line default
            #line hidden

            #line 228 ""
                foreach (var b in n.Item.InternalBusses)
                {
            #line default
            #line hidden

            #line 229 ""
                    this.Write("    bus_");

            #line default
            #line hidden

            #line 229 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 229 ""
                    this.Write(".forward_signals();\n    bus_");

            #line default
            #line hidden

            #line 230 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b))));

            #line default
            #line hidden

            #line 230 ""
                    this.Write(".propagate_signals();\n");

            #line default
            #line hidden

            #line 231 ""
                }

            #line default
            #line hidden

            #line 232 ""
            }

            #line default
            #line hidden

            #line 233 ""
            this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 235 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 235 ""
            this.Write("::VerifyTrace()\n{\n    if (trace_input == NULL) {\n        throw MessageException(\"" +
                       "Trace input file is not loaded\");\n    }\n\n    size_t i;\n    size_t field = 0;\n   " +
                       " std::string token;\n    std::istringstream valuestream(input_line);\n\n    // Forw" +
                       "ard past the ");

            #line default
            #line hidden

            #line 246 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(driver_signal_count));

            #line default
            #line hidden

            #line 246 ""
            this.Write(" signals\n    for(i = 0; i < ");

            #line default
            #line hidden

            #line 247 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(driver_signal_count));

            #line default
            #line hidden

            #line 247 ""
            this.Write("; i++) {\n        if (!std::getline(valuestream, token, \',\')) {\n            throw " +
                       "MessageException(\"Unexpected end-of-stream\");\n        }\n        field++;\n    }\n\n" +
                       "    bool source_is_undef;\n\n");

            #line default
            #line hidden

            #line 256 ""
            foreach (var signal in RS.VerifySignals)
            {
                var cpptype  = RS.TypeScope.GetType(signal);
                var typecast = cpptype.Name == "system_uint8" ? "(int)" : "";
                if (cpptype.IsArray)
                {
                    typecast = cpptype.ElementName == "system_uint8" ? "(int)" : "";
                    var eltype = cpptype.ElementName;
                    var length = (int)RS.GetArrayLength(signal).DefaultValue;


            #line default
            #line hidden

            #line 264 ""
                    this.Write("    for (i = 0; i < ");

            #line default
            #line hidden

            #line 264 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(length));

            #line default
            #line hidden

            #line 264 ""
                    this.Write(@"; i++) {
        if (!std::getline(valuestream, token, ',')) {
            std::stringstream sstm;
            sstm << ""Unexpected end-of-line in cycle "" << cycle << "", field "" << field << std::endl;
            throw MessageException(sstm.str());
        }

        source_is_undef = false;
        try {
            ");

            #line default
            #line hidden

            #line 273 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 273 ""
                    this.Write(" tmpval = bus_");

            #line default
            #line hidden

            #line 273 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 273 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 273 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 273 ""
                    this.Write("(i);\n        } catch (InvalidReadException e) {\n            source_is_undef = tru" +
                               "e;\n        }\n\n        if (token.compare(\"U\") == 0 && source_is_undef) {\n        " +
                               " // Don\'t care\n        } else if (token.compare(\"U\") != 0 && bus_");

            #line default
            #line hidden

            #line 280 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 280 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 280 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 280 ""
                    this.Write("(i) != parse_");

            #line default
            #line hidden

            #line 280 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 280 ""
                    this.Write("(token)) {\n            std::stringstream sstm;\n            sstm << \"Error in cycl" +
                               "e \" << cycle << std::endl;\n            sstm << \"Expected value \" << ");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("parse_");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("(token) << \", but got \" << ");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("bus_");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 283 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("(i) << \" for field \" << ");

            #line default
            #line hidden

            #line 283 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 283 ""
                    this.Write("_SIGNAL_NAMES[field] << \" (raw: \" << token << \")\" << std::endl;\n            throw" +
                               " MessageException(sstm.str());\n        }\n        field++;\n    }\n\n");

            #line default
            #line hidden

            #line 289 ""
                }
                else
                {
            #line default
            #line hidden

            #line 290 ""
                    this.Write(@"    if (!std::getline(valuestream, token, ',')) {
        std::stringstream sstm;
        sstm << ""Unexpected end-of-line in cycle "" << cycle << "", field "" << field << std::endl;
        throw MessageException(sstm.str());
    }

    source_is_undef = false;
    try {
        ");

            #line default
            #line hidden

            #line 298 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 298 ""
                    this.Write(" tmpval = bus_");

            #line default
            #line hidden

            #line 298 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 298 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 298 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 298 ""
                    this.Write("();\n    } catch (InvalidReadException e) {\n        source_is_undef = true;\n    }\n" +
                               "\n    if (token.compare(\"U\") == 0 && source_is_undef) {\n        // Don\'t care\n   " +
                               " } else if (token.compare(\"U\") != 0 && bus_");

            #line default
            #line hidden

            #line 305 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 305 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 305 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 305 ""
                    this.Write("() != parse_");

            #line default
            #line hidden

            #line 305 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 305 ""
                    this.Write("(token)) {\n        std::stringstream sstm;\n        sstm << \"Error in cycle \" << c" +
                               "ycle << std::endl;\n        sstm << \"Expected value \" << ");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("parse_");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("(token) << \", but got \" << ");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(typecast));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("bus_");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus)));

            #line default
            #line hidden

            #line 308 ""
                    this.Write(".");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("() << \" for field \" << ");

            #line default
            #line hidden

            #line 308 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 308 ""
                    this.Write("_SIGNAL_NAMES[field] << \" (raw: \" << token << \")\" << std::endl;\n        throw Mes" +
                               "sageException(sstm.str());\n    }\n    field++;\n");

            #line default
            #line hidden

            #line 312 ""
                }

            #line default
            #line hidden

            #line 313 ""
            }

            #line default
            #line hidden

            #line 314 ""
            this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 316 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network)));

            #line default
            #line hidden

            #line 316 ""
            this.Write("::Stop()\n{\n    if (trace_input != NULL) {\n        trace_input->close();\n        d" +
                       "elete trace_input;\n    }\n}\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Exemple #13
0
        /// <summary>
        /// 导入方法
        /// </summary>
        /// <returns></returns>
        public RestResult Import()
        {
            RestResult result = new RestResult();

            Check.NullOrEmpty(ImportArgument, "ImportArgument");

            try
            {
                using (SqlConnection conn = new SqlConnection(ImportArgument.DataConnectionString))
                {
                    conn.Open();
                    Check.True(OnBeginImport != null, () => { this.OnBeginImport(this, new EventArgs()); });

                    try
                    {
                        int secCount  = 0;
                        int faidCount = 0;
                        int startRow  = ImportArgument.FirstRowIsHead ? 1 : 0;

                        using (DataBaseHelper helper = new DataBaseHelper(conn))
                        {
                            IEnumerable <Column> TableColumns = helper.GetColumnsByTableName(ImportArgument.DataTable);
                            Check.True(TableColumns != null, () =>
                            {
                                var datas        = File.ReadLines(ImportArgument.FilePath, Encoding.Default).ToArray();
                                string insertSql = string.Empty;
                                for (int i = startRow; i < datas.Length; i++)
                                {
                                    var mapSql = Mapping(TableColumns.Where(p => !p.IsPrimaryKey), datas[i].Split(','));
                                    insertSql  = string.Format(InsertSql, ImportArgument.DataTable, mapSql);
                                    Check.True(conn.State != ConnectionState.Open, () => { conn.Open(); });

                                    using (SqlCommand cmd2 = new SqlCommand(insertSql, conn))
                                    {
                                        var ret3 = cmd2.ExecuteNonQuery();
                                        Check.True(ret3 != -1, () => { secCount++; }, () => { faidCount++; });
                                        Check.True(this.OnDataImported != null, () =>
                                        {
                                            this.OnDataImported(this, new ImportingEventArgs()
                                            {
                                                IsImportSuccessed  = ret3 != -1,
                                                CurrentImportIndex = startRow == 0 ? i + 1 : i,
                                                DataCount          = datas.Length
                                            });
                                        });
                                    }
                                }

                                Check.True(faidCount > 0, () =>
                                {
                                    result.IsSuccess = false;
                                    result.Message   = string.Format(RS.get("Importer_Result_HasFaildItem"), secCount, faidCount);
                                }, () =>
                                {
                                    result.IsSuccess = true;
                                    result.Message   = string.Format(RS.get("Importer_Result_Success"), secCount);
                                });
                            }, () =>
                            {
                                result.IsSuccess = false;
                                result.Message   = RS.get("Importer_Exception_CanNotGetConstruction");
                            });
                        }
                    }
                    catch (Exception ex)
                    {
                        result.IsSuccess = false;
                        result.Message   = ex.Message;
                    }
                    Check.True(OnEndImport != null, () => { this.OnEndImport(this, new EventArgs()); });
                }
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Message   = ex.Message;
            }
            return(result);
        }
Exemple #14
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 1 ""
            this.Write("");

            #line default
            #line hidden

            #line 6 ""
            this.Write("#include <iostream>\n#include <cstring>\n#include \"");

            #line default
            #line hidden

            #line 8 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusDefinitionsFileName(Network)));

            #line default
            #line hidden

            #line 8 ""
            this.Write("\"\n\n// Insert additional includes here\n// #### USER-DATA-INCLUDE-START\n// #### USE" +
                       "R-DATA-INCLUDE-END\n\n");

            #line default
            #line hidden

            #line 14 ""

            var known = new HashSet <Type>();
            foreach (var bus in Network.Busses)
            {
                if (known.Contains(bus.SourceType))
                {
                    continue;
                }
                known.Add(bus.SourceType);


            #line default
            #line hidden

            #line 21 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 22 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 22 ""
                this.Write("::");

            #line default
            #line hidden

            #line 22 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 22 ""
                this.Write(" () {\n");

            #line default
            #line hidden

            #line 23 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;

                        string arraylen = string.Empty;

                        if (signal.DefaultValue is SME.AST.ArrayCreateExpression)
                        {
                            arraylen = (signal.DefaultValue as SME.AST.ArrayCreateExpression).ElementExpressions.Length.ToString();
                        }
                        else if (signal.DefaultValue is SME.AST.EmptyArrayCreateExpression)
                        {
                            arraylen = RS.Renderer.RenderExpression((signal.DefaultValue as SME.AST.EmptyArrayCreateExpression).SizeExpression);
                        }
                        else
                        {
                            arraylen = RS.GetArrayLength(signal).DefaultValue.ToString();
                        }


            #line default
            #line hidden

            #line 37 ""
                        this.Write("    \n    size_");

            #line default
            #line hidden

            #line 38 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 38 ""
                        this.Write(" = ");

            #line default
            #line hidden

            #line 38 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 38 ""
                        this.Write(";\n    valid_");

            #line default
            #line hidden

            #line 39 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 39 ""
                        this.Write(" = new bool[size_");

            #line default
            #line hidden

            #line 39 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 39 ""
                        this.Write("];\n    written_");

            #line default
            #line hidden

            #line 40 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 40 ""
                        this.Write(" = new bool[size_");

            #line default
            #line hidden

            #line 40 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 40 ""
                        this.Write("];\n    staged_");

            #line default
            #line hidden

            #line 41 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 41 ""
                        this.Write(" = new bool[size_");

            #line default
            #line hidden

            #line 41 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 41 ""
                        this.Write("];\n\n    write_");

            #line default
            #line hidden

            #line 43 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 43 ""
                        this.Write(" = new ");

            #line default
            #line hidden

            #line 43 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 43 ""
                        this.Write("[size_");

            #line default
            #line hidden

            #line 43 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 43 ""
                        this.Write("];\n    read_");

            #line default
            #line hidden

            #line 44 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 44 ""
                        this.Write(" = new ");

            #line default
            #line hidden

            #line 44 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 44 ""
                        this.Write("[size_");

            #line default
            #line hidden

            #line 44 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 44 ""
                        this.Write("];\n\n    std::memset(written_");

            #line default
            #line hidden

            #line 46 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 46 ""
                        this.Write(", 0, size_");

            #line default
            #line hidden

            #line 46 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 46 ""
                        this.Write(" * sizeof(bool));\n    std::memset(staged_");

            #line default
            #line hidden

            #line 47 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 47 ""
                        this.Write(", 0, size_");

            #line default
            #line hidden

            #line 47 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 47 ""
                        this.Write(" * sizeof(bool));\n");

            #line default
            #line hidden

            #line 48 ""
                        if (signal.DefaultValue == null)
                        {
            #line default
            #line hidden

            #line 49 ""
                            this.Write("    std::memset(valid_");

            #line default
            #line hidden

            #line 49 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 49 ""
                            this.Write(", 0, size_");

            #line default
            #line hidden

            #line 49 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 49 ""
                            this.Write(" * sizeof(bool));\n");

            #line default
            #line hidden

            #line 50 ""
                        }
                        else
                        {
            #line default
            #line hidden

            #line 51 ""
                            this.Write("    std::memset(valid_");

            #line default
            #line hidden

            #line 51 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 51 ""
                            this.Write(", 1, size_");

            #line default
            #line hidden

            #line 51 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 51 ""
                            this.Write(" * sizeof(bool));\n");

            #line default
            #line hidden

            #line 52 ""
                            if ((signal.DefaultValue is SME.AST.ArrayCreateExpression) || signal.DefaultValue is Array)
                            {
            #line default
            #line hidden

            #line 53 ""
                                this.Write("    ");

            #line default
            #line hidden

            #line 53 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 53 ""
                                this.Write(" orig_");

            #line default
            #line hidden

            #line 53 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 53 ""
                                this.Write("[] = ");

            #line default
            #line hidden

            #line 53 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(signal)));

            #line default
            #line hidden

            #line 53 ""
                                this.Write(";\n    std::memcpy(read_");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 54 ""
                                this.Write(", orig_");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 54 ""
                                this.Write(", ");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 54 ""
                                this.Write(" * sizeof(");

            #line default
            #line hidden

            #line 54 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 54 ""
                                this.Write("));\n    std::memcpy(write_");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 55 ""
                                this.Write(", orig_");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 55 ""
                                this.Write(", ");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(arraylen));

            #line default
            #line hidden

            #line 55 ""
                                this.Write(" * sizeof(");

            #line default
            #line hidden

            #line 55 ""
                                this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 55 ""
                                this.Write("));\n");

            #line default
            #line hidden

            #line 56 ""
                            }

            #line default
            #line hidden

            #line 57 ""
                        }

            #line default
            #line hidden

            #line 58 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 59 ""
                        this.Write("    written_");

            #line default
            #line hidden

            #line 59 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 59 ""
                        this.Write(" = false;\n");

            #line default
            #line hidden

            #line 60 ""
                        if (signal.DefaultValue == null)
                        {
            #line default
            #line hidden

            #line 61 ""
                            this.Write("    valid_");

            #line default
            #line hidden

            #line 61 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 61 ""
                            this.Write(" = false;\n");

            #line default
            #line hidden

            #line 62 ""
                        }

            #line default
            #line hidden

            #line 63 ""
                    }

            #line default
            #line hidden

            #line 64 ""
                }

            #line default
            #line hidden

            #line 65 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 66 ""
                foreach (var signal in bus.Signals.Where(x => x.DefaultValue != null))
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    var ini     = RS.Renderer.GetInitializer(signal);

                    if (!cpptype.IsArray)
                    {
            #line default
            #line hidden

            #line 71 ""
                        this.Write("    valid_");

            #line default
            #line hidden

            #line 71 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 71 ""
                        this.Write(" = true;\n");

            #line default
            #line hidden

            #line 72 ""
                    }

            #line default
            #line hidden

            #line 73 ""
                    if (!string.IsNullOrWhiteSpace(ini))
                    {
            #line default
            #line hidden

            #line 74 ""
                        this.Write("    read_");

            #line default
            #line hidden

            #line 74 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 74 ""
                        this.Write(" = write_");

            #line default
            #line hidden

            #line 74 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 74 ""
                        this.Write(" = ");

            #line default
            #line hidden

            #line 74 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(signal)));

            #line default
            #line hidden

            #line 74 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 75 ""
                    }

            #line default
            #line hidden

            #line 76 ""
                }

            #line default
            #line hidden

            #line 77 ""
                this.Write("}\n\n");

            #line default
            #line hidden

            #line 79 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;



            #line default
            #line hidden

            #line 85 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 85 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 85 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 85 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 85 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 85 ""
                        this.Write("(size_t index) const {\n    if (index >= size_");

            #line default
            #line hidden

            #line 86 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 86 ""
                        this.Write(")\n        throw IndexOutOfBoundsException(\"Invalid index: ");

            #line default
            #line hidden

            #line 87 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 87 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 87 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 87 ""
                        this.Write("\");\n    if (!valid_");

            #line default
            #line hidden

            #line 88 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 88 ""
                        this.Write("[index])\n        throw InvalidReadException(\"Invalid read: ");

            #line default
            #line hidden

            #line 89 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 89 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 89 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 89 ""
                        this.Write("\");\n\n    return read_");

            #line default
            #line hidden

            #line 91 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 91 ""
                        this.Write("[index];\n}\n\n");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 94 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 94 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 94 ""
                        this.Write("(size_t index, ");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(eltype));

            #line default
            #line hidden

            #line 94 ""
                        this.Write(" value) {\n    if (index >= size_");

            #line default
            #line hidden

            #line 95 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 95 ""
                        this.Write(")\n        throw IndexOutOfBoundsException(\"Invalid index: ");

            #line default
            #line hidden

            #line 96 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 96 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 96 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 96 ""
                        this.Write("\");\n    if (written_");

            #line default
            #line hidden

            #line 97 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 97 ""
                        this.Write("[index])\n        throw InvalidDoubleWriteException(\"Invalid write: ");

            #line default
            #line hidden

            #line 98 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 98 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 98 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 98 ""
                        this.Write("\");\n\n    staged_");

            #line default
            #line hidden

            #line 100 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 100 ""
                        this.Write("[index] = true;\n    return write_");

            #line default
            #line hidden

            #line 101 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 101 ""
                        this.Write("[index] = value;\n}\n");

            #line default
            #line hidden

            #line 103 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 104 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 104 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 104 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 104 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 104 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 104 ""
                        this.Write("() const {\n    if (!valid_");

            #line default
            #line hidden

            #line 105 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 105 ""
                        this.Write(")\n        throw InvalidReadException(\"Invalid read: ");

            #line default
            #line hidden

            #line 106 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 106 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 106 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 106 ""
                        this.Write("\");\n\n    return read_");

            #line default
            #line hidden

            #line 108 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 108 ""
                        this.Write(";\n}\n\n");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 111 ""
                        this.Write(" ");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 111 ""
                        this.Write("::");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 111 ""
                        this.Write("(");

            #line default
            #line hidden

            #line 111 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal)));

            #line default
            #line hidden

            #line 111 ""
                        this.Write(" value) {\n    if (written_");

            #line default
            #line hidden

            #line 112 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 112 ""
                        this.Write(")\n        throw InvalidDoubleWriteException(\"Invalid write: ");

            #line default
            #line hidden

            #line 113 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 113 ""
                        this.Write(".");

            #line default
            #line hidden

            #line 113 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 113 ""
                        this.Write("\");\n\n    staged_");

            #line default
            #line hidden

            #line 115 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 115 ""
                        this.Write(" = true;\n    return write_");

            #line default
            #line hidden

            #line 116 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 116 ""
                        this.Write(" = value;\n}\n");

            #line default
            #line hidden

            #line 118 ""
                    }

            #line default
            #line hidden

            #line 119 ""
                }

            #line default
            #line hidden

            #line 120 ""
                this.Write("\nvoid ");

            #line default
            #line hidden

            #line 121 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 121 ""
                this.Write("::forward_signals() {\n    size_t i;\n\n");

            #line default
            #line hidden

            #line 124 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;


            #line default
            #line hidden

            #line 129 ""
                        this.Write("    for(i = 0; i < size_");

            #line default
            #line hidden

            #line 129 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 129 ""
                        this.Write("; i++) {\n        if (staged_");

            #line default
            #line hidden

            #line 130 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 130 ""
                        this.Write("[i]) {\n            written_");

            #line default
            #line hidden

            #line 131 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 131 ""
                        this.Write("[i] = true;\n            staged_");

            #line default
            #line hidden

            #line 132 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 132 ""
                        this.Write("[i] = false;\n            valid_");

            #line default
            #line hidden

            #line 133 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 133 ""
                        this.Write("[i] = true;\n            read_");

            #line default
            #line hidden

            #line 134 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 134 ""
                        this.Write("[i] = write_");

            #line default
            #line hidden

            #line 134 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 134 ""
                        this.Write("[i];\n        }\n    }\n");

            #line default
            #line hidden

            #line 137 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 138 ""
                        this.Write("    if (staged_");

            #line default
            #line hidden

            #line 138 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 138 ""
                        this.Write(") {\n        written_");

            #line default
            #line hidden

            #line 139 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 139 ""
                        this.Write(" = true;\n        staged_");

            #line default
            #line hidden

            #line 140 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 140 ""
                        this.Write(" = false;\n        valid_");

            #line default
            #line hidden

            #line 141 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 141 ""
                        this.Write(" = true;\n        read_");

            #line default
            #line hidden

            #line 142 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 142 ""
                        this.Write(" = write_");

            #line default
            #line hidden

            #line 142 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 142 ""
                        this.Write(";\n    }\n");

            #line default
            #line hidden

            #line 144 ""
                    }

            #line default
            #line hidden

            #line 145 ""
                }

            #line default
            #line hidden

            #line 146 ""
                this.Write("}\n\nvoid ");

            #line default
            #line hidden

            #line 148 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 148 ""
                this.Write("::propagate_signals() {\n    size_t i;\n\n");

            #line default
            #line hidden

            #line 151 ""
                foreach (var signal in bus.Signals)
                {
                    var cpptype = RS.TypeScope.GetType(signal);
                    if (cpptype.IsArray)
                    {
                        var eltype = cpptype.ElementName;

            #line default
            #line hidden

            #line 155 ""
                        this.Write("    for (i = 0; i < size_");

            #line default
            #line hidden

            #line 155 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 155 ""
                        this.Write("; i++) {\n        if (written_");

            #line default
            #line hidden

            #line 156 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 156 ""
                        this.Write("[i]) {\n            written_");

            #line default
            #line hidden

            #line 157 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 157 ""
                        this.Write("[i] = false;\n        }\n    }\n");

            #line default
            #line hidden

            #line 160 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 161 ""
                        this.Write("    if (written_");

            #line default
            #line hidden

            #line 161 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 161 ""
                        this.Write(") {\n        written_");

            #line default
            #line hidden

            #line 162 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 162 ""
                        this.Write(" = false;\n    }\n");

            #line default
            #line hidden

            #line 164 ""
                    }

            #line default
            #line hidden

            #line 165 ""
                }

            #line default
            #line hidden

            #line 166 ""
                this.Write("}\n\n");

            #line default
            #line hidden

            #line 168 ""
            }

            #line default
            #line hidden

            #line 169 ""
            this.Write("\n// Insert additional code and classes here\n// #### USER-DATA-EXTRA-START\n// ####" +
                       " USER-DATA-EXTRA-END\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public void ConstructorThrowsWithIllegalMediaRange(MediaTypeHeaderValue mediaRange, MediaTypeHeaderValue mediaType)
        {
            string errorMessage = RS.Format(Properties.Resources.InvalidMediaRange, mediaRange.MediaType);

            Assert.Throws <InvalidOperationException>(() => new MediaRangeMapping(mediaRange, mediaType), errorMessage);
        }
Exemple #16
0
        private static bool Insert(JObject root, string[] path, string value, bool throwOnError)
        {
            // to-do: verify consistent with new parsing, whether single value is in path or value
            Contract.Assert(root != null, "Root object can't be null");

            JObject current = root;
            JObject parent  = null;

            for (int i = 0; i < path.Length - 1; i++)
            {
                if (String.IsNullOrEmpty(path[i]))
                {
                    if (throwOnError)
                    {
                        throw new ArgumentException(RS.Format(Properties.Resources.InvalidArrayInsert, BuildPathString(path, i)));
                    }

                    return(false);
                }

                if (!((IDictionary <string, JToken>)current).ContainsKey(path[i]))
                {
                    current[path[i]] = new JObject();
                }
                else
                {
                    // Since the loop goes up to the next-to-last item in the path, if we hit a null
                    // or a primitive, then we have a mismatching node.
                    if (current[path[i]] == null || current[path[i]] is JValue)
                    {
                        if (throwOnError)
                        {
                            throw new ArgumentException(RS.Format(Properties.Resources.FormUrlEncodedMismatchingTypes, BuildPathString(path, i)));
                        }

                        return(false);
                    }
                }

                parent  = current;
                current = current[path[i]] as JObject;
            }

            string lastKey = path[path.Length - 1];

            if (String.IsNullOrEmpty(lastKey) && path.Length > 1)
            {
                if (!AddToArray(parent, path, value, throwOnError))
                {
                    return(false);
                }
            }
            else
            {
                if (current == null)
                {
                    if (throwOnError)
                    {
                        throw new ArgumentException(RS.Format(Properties.Resources.FormUrlEncodedMismatchingTypes, BuildPathString(path, path.Length - 1)));
                    }

                    return(false);
                }

                if (!AddToObject(current, path, value, throwOnError))
                {
                    return(false);
                }
            }

            return(true);
        }
        /// <summary>
        /// Parses the data provided and generates parsed MIME body part bodies in the form of <see cref="ArraySegment{T}"/> which are ready to
        /// write to the output stream.
        /// </summary>
        /// <param name="data">The data to parse</param>
        /// <param name="bytesRead">The number of bytes available in the input data</param>
        /// <returns>Parsed <see cref="MimeBodyPart"/> instances.</returns>
        public IEnumerable <MimeBodyPart> ParseBuffer(byte[] data, int bytesRead)
        {
            int  bytesConsumed = 0;
            bool isFinal       = false;

            if (bytesRead == 0)
            {
                CleanupCurrentBodyPart();
                throw new IOException(Properties.Resources.ReadAsMimeMultipartUnexpectedTermination);
            }

            // Make sure we remove an old array segments.
            _currentBodyPart.Segments.Clear();

            while (bytesConsumed < bytesRead)
            {
                _mimeStatus = _mimeParser.ParseBuffer(data, bytesRead, ref bytesConsumed, out _parsedBodyPart[0], out _parsedBodyPart[1], out isFinal);
                if (_mimeStatus != MimeMultipartParser.State.BodyPartCompleted && _mimeStatus != MimeMultipartParser.State.NeedMoreData)
                {
                    CleanupCurrentBodyPart();
                    throw new IOException(RS.Format(Properties.Resources.ReadAsMimeMultipartParseError, bytesConsumed, data));
                }

                // First body is empty preamble which we just ignore
                if (_isFirst)
                {
                    if (_mimeStatus == MimeMultipartParser.State.BodyPartCompleted)
                    {
                        _isFirst = false;
                    }

                    continue;
                }

                // Parse the two array segments containing parsed body parts that the MIME parser gave us
                foreach (ArraySegment <byte> part in _parsedBodyPart)
                {
                    if (part.Count == 0)
                    {
                        continue;
                    }

                    if (_bodyPartHeaderStatus != ParserState.Done)
                    {
                        int headerConsumed = part.Offset;
                        _bodyPartHeaderStatus = _currentBodyPart.HeaderParser.ParseBuffer(part.Array, part.Count + part.Offset, ref headerConsumed);
                        if (_bodyPartHeaderStatus == ParserState.Done)
                        {
                            // Add the remainder as body part content
                            _currentBodyPart.Segments.Add(new ArraySegment <byte>(part.Array, headerConsumed, part.Count + part.Offset - headerConsumed));
                        }
                        else if (_bodyPartHeaderStatus != ParserState.NeedMoreData)
                        {
                            CleanupCurrentBodyPart();
                            throw new IOException(RS.Format(Properties.Resources.ReadAsMimeMultipartHeaderParseError, headerConsumed, part.Array));
                        }
                    }
                    else
                    {
                        // Add the data as body part content
                        _currentBodyPart.Segments.Add(part);
                    }
                }

                if (_mimeStatus == MimeMultipartParser.State.BodyPartCompleted)
                {
                    // If body is completed then swap current body part
                    MimeBodyPart completed = _currentBodyPart;
                    completed.IsComplete = true;
                    completed.IsFinal    = isFinal;

                    _currentBodyPart      = new MimeBodyPart(_streamProvider, _maxBodyPartHeaderSize);
                    _mimeStatus           = MimeMultipartParser.State.NeedMoreData;
                    _bodyPartHeaderStatus = ParserState.NeedMoreData;
                    yield return(completed);
                }
                else
                {
                    // Otherwise return what we have
                    yield return(_currentBodyPart);
                }
            }
        }
Exemple #18
0
        private static bool AddToObject(JObject obj, string[] path, string value, bool throwOnError)
        {
            Contract.Assert(obj != null, "JsonObject cannot be null");

            int    pathIndex = path.Length - 1;
            string key       = path[pathIndex];

            if (((IDictionary <string, JToken>)obj).ContainsKey(key))
            {
                if (obj[key] == null || obj[key].Type == JTokenType.Null)
                {
                    if (throwOnError)
                    {
                        throw new ArgumentException(RS.Format(Properties.Resources.FormUrlEncodedMismatchingTypes, BuildPathString(path, pathIndex)));
                    }

                    return(false);
                }

                bool isRoot = path.Length == 1;
                if (isRoot)
                {
                    // jQuery 1.3 behavior, make it into an array(object) if primitive
                    if (obj[key].Type == JTokenType.String)
                    {
                        string  oldValue = obj[key].ToObject <string>();
                        JObject jo       = new JObject();
                        jo.Add("0", oldValue);
                        jo.Add("1", value);
                        obj[key] = jo;
                    }
                    else if (obj[key] is JObject)
                    {
                        // if it was already an object, simply add the value
                        JObject jo    = obj[key] as JObject;
                        string  index = GetIndex(jo, throwOnError);
                        if (index == null)
                        {
                            return(false);
                        }

                        jo.Add(index, value);
                    }
                }
                else
                {
                    if (throwOnError)
                    {
                        throw new ArgumentException(RS.Format(Properties.Resources.JQuery13CompatModeNotSupportNestedJson, BuildPathString(path, pathIndex)));
                    }

                    return(false);
                }
            }
            else
            {
                // if the object didn't contain the key, simply add it now
                // the null check here is necessary because otherwise the created JValue type will be implictly cast as a string JValue
                if (value == null)
                {
                    obj[key] = null;
                }
                else
                {
                    obj[key] = value;
                }
            }

            return(true);
        }
        private static ParserState ParseStatusLine(
            byte[] buffer,
            int bytesReady,
            ref int bytesConsumed,
            ref HttpStatusLineState statusLineState,
            int maximumHeaderLength,
            ref int totalBytesConsumed,
            StringBuilder currentToken,
            HttpUnsortedResponse httpResponse)
        {
            Contract.Assert((bytesReady - bytesConsumed) >= 0, "ParseRequestLine()|(bytesReady - bytesConsumed) < 0");
            Contract.Assert(maximumHeaderLength <= 0 || totalBytesConsumed <= maximumHeaderLength, "ParseRequestLine()|Headers already read exceeds limit.");

            // Remember where we started.
            int initialBytesParsed = bytesConsumed;
            int segmentStart;

            // Set up parsing status with what will happen if we exceed the buffer.
            ParserState parseStatus  = ParserState.DataTooBig;
            int         effectiveMax = maximumHeaderLength <= 0 ? Int32.MaxValue : (maximumHeaderLength - totalBytesConsumed + bytesConsumed);

            if (bytesReady < effectiveMax)
            {
                parseStatus  = ParserState.NeedMoreData;
                effectiveMax = bytesReady;
            }

            Contract.Assert(bytesConsumed < effectiveMax, "We have already consumed more than the max header length.");

            switch (statusLineState)
            {
            case HttpStatusLineState.BeforeVersionNumbers:
                segmentStart = bytesConsumed;
                while (buffer[bytesConsumed] != '/')
                {
                    if (buffer[bytesConsumed] < 0x21 || buffer[bytesConsumed] > 0x7a)
                    {
                        parseStatus = ParserState.Invalid;
                        goto quit;
                    }

                    if (++bytesConsumed == effectiveMax)
                    {
                        string token = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                        currentToken.Append(token);
                        goto quit;
                    }
                }

                if (bytesConsumed > segmentStart)
                {
                    string token = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                    currentToken.Append(token);
                }

                // Validate value
                string version = currentToken.ToString();
                if (String.CompareOrdinal(FormattingUtilities.HttpVersionToken, version) != 0)
                {
                    throw new FormatException(RS.Format(Properties.Resources.HttpInvalidVersion, version, FormattingUtilities.HttpVersionToken));
                }

                currentToken.Clear();

                // Move past the '/'
                statusLineState = HttpStatusLineState.MajorVersionNumber;
                if (++bytesConsumed == effectiveMax)
                {
                    goto quit;
                }

                goto case HttpStatusLineState.MajorVersionNumber;

            case HttpStatusLineState.MajorVersionNumber:
                segmentStart = bytesConsumed;
                while (buffer[bytesConsumed] != '.')
                {
                    if (buffer[bytesConsumed] < '0' || buffer[bytesConsumed] > '9')
                    {
                        parseStatus = ParserState.Invalid;
                        goto quit;
                    }

                    if (++bytesConsumed == effectiveMax)
                    {
                        string major = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                        currentToken.Append(major);
                        goto quit;
                    }
                }

                if (bytesConsumed > segmentStart)
                {
                    string major = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                    currentToken.Append(major);
                }

                // Move past the "."
                currentToken.Append('.');
                statusLineState = HttpStatusLineState.MinorVersionNumber;
                if (++bytesConsumed == effectiveMax)
                {
                    goto quit;
                }

                goto case HttpStatusLineState.MinorVersionNumber;

            case HttpStatusLineState.MinorVersionNumber:
                segmentStart = bytesConsumed;
                while (buffer[bytesConsumed] != ' ')
                {
                    if (buffer[bytesConsumed] < '0' || buffer[bytesConsumed] > '9')
                    {
                        parseStatus = ParserState.Invalid;
                        goto quit;
                    }

                    if (++bytesConsumed == effectiveMax)
                    {
                        string minor = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                        currentToken.Append(minor);
                        goto quit;
                    }
                }

                if (bytesConsumed > segmentStart)
                {
                    string minor = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                    currentToken.Append(minor);
                }

                // Copy out value
                httpResponse.Version = Version.Parse(currentToken.ToString());
                currentToken.Clear();

                // Move past the SP
                statusLineState = HttpStatusLineState.StatusCode;
                if (++bytesConsumed == effectiveMax)
                {
                    goto quit;
                }

                goto case HttpStatusLineState.StatusCode;

            case HttpStatusLineState.StatusCode:
                segmentStart = bytesConsumed;
                while (buffer[bytesConsumed] != ' ')
                {
                    if (buffer[bytesConsumed] < '0' || buffer[bytesConsumed] > '9')
                    {
                        parseStatus = ParserState.Invalid;
                        goto quit;
                    }

                    if (++bytesConsumed == effectiveMax)
                    {
                        string method = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                        currentToken.Append(method);
                        goto quit;
                    }
                }

                if (bytesConsumed > segmentStart)
                {
                    string method = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                    currentToken.Append(method);
                }

                // Copy value out
                int statusCode = Int32.Parse(currentToken.ToString(), CultureInfo.InvariantCulture);
                if (statusCode < 100 || statusCode > 1000)
                {
                    throw new FormatException(RS.Format(Properties.Resources.HttpInvalidStatusCode, statusCode, 100, 1000));
                }

                httpResponse.StatusCode = (HttpStatusCode)statusCode;
                currentToken.Clear();

                // Move past the SP
                statusLineState = HttpStatusLineState.ReasonPhrase;
                if (++bytesConsumed == effectiveMax)
                {
                    goto quit;
                }

                goto case HttpStatusLineState.ReasonPhrase;

            case HttpStatusLineState.ReasonPhrase:
                segmentStart = bytesConsumed;
                while (buffer[bytesConsumed] != '\r')
                {
                    if (buffer[bytesConsumed] < 0x20 || buffer[bytesConsumed] > 0x7a)
                    {
                        parseStatus = ParserState.Invalid;
                        goto quit;
                    }

                    if (++bytesConsumed == effectiveMax)
                    {
                        string addr = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                        currentToken.Append(addr);
                        goto quit;
                    }
                }

                if (bytesConsumed > segmentStart)
                {
                    string addr = Encoding.UTF8.GetString(buffer, segmentStart, bytesConsumed - segmentStart);
                    currentToken.Append(addr);
                }

                // Copy value out
                httpResponse.ReasonPhrase = currentToken.ToString();
                currentToken.Clear();

                // Move past the CR
                statusLineState = HttpStatusLineState.AfterCarriageReturn;
                if (++bytesConsumed == effectiveMax)
                {
                    goto quit;
                }

                goto case HttpStatusLineState.AfterCarriageReturn;

            case HttpStatusLineState.AfterCarriageReturn:
                if (buffer[bytesConsumed] != '\n')
                {
                    parseStatus = ParserState.Invalid;
                    goto quit;
                }

                parseStatus = ParserState.Done;
                bytesConsumed++;
                break;
            }

quit:
            totalBytesConsumed += bytesConsumed - initialBytesParsed;
            return(parseStatus);
        }
Exemple #20
0
 /// <summary>
 /// Writes synchronously to the buffered stream.
 /// </summary>
 /// <param name="type">The type of the object to write.</param>
 /// <param name="value">The object value to write.  It may be <c>null</c>.</param>
 /// <param name="stream">The <see cref="Stream"/> to which to write.</param>
 /// <param name="contentHeaders">The <see cref="HttpContentHeaders"/> if available. It may be <c>null</c>.</param>
 public virtual void WriteToStream(Type type, object value, Stream stream, HttpContentHeaders contentHeaders)
 {
     throw new NotSupportedException(RS.Format(Properties.Resources.MediaTypeFormatterCannotWriteSync, GetType().Name));
 }
Exemple #21
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 6 ""
            this.Write(@"
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

-- library SYSTEM_TYPES;
use work.SYSTEM_TYPES.ALL;

-- User defined packages here
-- #### USER-DATA-IMPORTS-START
-- #### USER-DATA-IMPORTS-END

package CUSTOM_TYPES is

-- User defined types here
-- #### USER-DATA-CORETYPES-START
-- #### USER-DATA-CORETYPES-END

");

            #line default
            #line hidden

            #line 24 ""
            if (RS.CustomTypes.Any())
            {
            #line default
            #line hidden

            #line 25 ""
                this.Write("    -- Types for processes\n");

            #line default
            #line hidden

            #line 26 ""
                foreach (var t in RS.CustomTypes)
                {
            #line default
            #line hidden

            #line 27 ""
                    this.Write("    type ");

            #line default
            #line hidden

            #line 27 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(t.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 27 ""
                    this.Write(" is\n");

            #line default
            #line hidden

            #line 28 ""
                    foreach (var f in RS.ListMembers(t))
                    {
            #line default
            #line hidden

            #line 29 ""
                        this.Write("    ");

            #line default
            #line hidden

            #line 29 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(f));

            #line default
            #line hidden

            #line 29 ""
                        this.Write("\n");

            #line default
            #line hidden

            #line 30 ""
                    }

            #line default
            #line hidden

            #line 31 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 32 ""
                }

            #line default
            #line hidden

            #line 33 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 34 ""
            }

            #line default
            #line hidden

            #line 35 ""
            foreach (var t in RS.TypeDefinitions)
            {
            #line default
            #line hidden

            #line 36 ""
                this.Write("    ");

            #line default
            #line hidden

            #line 36 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(t));

            #line default
            #line hidden

            #line 36 ""
                this.Write(";\n");

            #line default
            #line hidden

            #line 37 ""
            }

            #line default
            #line hidden

            #line 38 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 39 ""
            foreach (var enumtype in RS.EnumTypes.Where(x => x.IsIrregularEnum))
            {
            #line default
            #line hidden

            #line 40 ""
                this.Write("    -- Converts an integer to ");

            #line default
            #line hidden

            #line 40 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 40 ""
                this.Write("\n    pure function fromValue_");

            #line default
            #line hidden

            #line 41 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 41 ""
                this.Write("(v: INTEGER) return ");

            #line default
            #line hidden

            #line 41 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 41 ""
                this.Write(";\n    -- Converts a ");

            #line default
            #line hidden

            #line 42 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 42 ""
                this.Write(" to an integer\n    pure function toValue_");

            #line default
            #line hidden

            #line 43 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 43 ""
                this.Write("(v: ");

            #line default
            #line hidden

            #line 43 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 43 ""
                this.Write(") return INTEGER;\n");

            #line default
            #line hidden

            #line 44 ""
            }

            #line default
            #line hidden

            #line 45 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 46 ""
            if (RS.BusArrays.Any())
            {
            #line default
            #line hidden

            #line 47 ""
                this.Write("    -- Bus array definitions\n");

            #line default
            #line hidden

            #line 48 ""
                foreach (var signal in RS.BusArrays)
                {
                    var vhdltype    = RS.VHDLType(signal);
                    var elementtype = RS.TypeScope.GetByName(vhdltype.ElementName);
                    var bus         = signal.Parent as AST.Bus;
                    var arraylength = RS.GetArrayLength(signal);

                    if (elementtype.IsSystemType)
                    {
            #line default
            #line hidden

            #line 55 ""
                        this.Write("    subtype ");

            #line default
            #line hidden

            #line 55 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 55 ""
                        this.Write("_");

            #line default
            #line hidden

            #line 55 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 55 ""
                        this.Write("_type is ");

            #line default
            #line hidden

            #line 55 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(elementtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 55 ""
                        this.Write("_ARRAY(0 to ");

            #line default
            #line hidden

            #line 55 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(arraylength));

            #line default
            #line hidden

            #line 55 ""
                        this.Write(" - 1);\n");

            #line default
            #line hidden

            #line 56 ""
                    }
                    else if (RS.Config.USE_EXPLICIT_LITERAL_ARRAY_LENGTH)
                    {
            #line default
            #line hidden

            #line 57 ""
                        this.Write("    type ");

            #line default
            #line hidden

            #line 57 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 57 ""
                        this.Write("_");

            #line default
            #line hidden

            #line 57 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 57 ""
                        this.Write("_type is array (0 to ");

            #line default
            #line hidden

            #line 57 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(arraylength - 1));

            #line default
            #line hidden

            #line 57 ""
                        this.Write(") of ");

            #line default
            #line hidden

            #line 57 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(elementtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 57 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 58 ""
                    }
                    else
                    {
            #line default
            #line hidden

            #line 59 ""
                        this.Write("    type ");

            #line default
            #line hidden

            #line 59 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 59 ""
                        this.Write("_");

            #line default
            #line hidden

            #line 59 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name));

            #line default
            #line hidden

            #line 59 ""
                        this.Write("_type is array (0 to ");

            #line default
            #line hidden

            #line 59 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(arraylength));

            #line default
            #line hidden

            #line 59 ""
                        this.Write(" - 1) of ");

            #line default
            #line hidden

            #line 59 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(elementtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 59 ""
                        this.Write(";\n");

            #line default
            #line hidden

            #line 60 ""
                    }

            #line default
            #line hidden

            #line 61 ""
                }

            #line default
            #line hidden

            #line 62 ""
            }

            #line default
            #line hidden

            #line 63 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 64 ""
            foreach (var enumtype in RS.EnumTypes)
            {
            #line default
            #line hidden

            #line 65 ""
                this.Write("    -- converts ");

            #line default
            #line hidden

            #line 65 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.Name));

            #line default
            #line hidden

            #line 65 ""
                this.Write(" into a string\n    pure function str(b: ");

            #line default
            #line hidden

            #line 66 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 66 ""
                this.Write(") return string;\n");

            #line default
            #line hidden

            #line 67 ""
            }

            #line default
            #line hidden

            #line 68 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 69 ""
            if (RS.Constants.Any())
            {
            #line default
            #line hidden

            #line 70 ""
                this.Write("    -- Constant definitions\n");

            #line default
            #line hidden

            #line 71 ""
            }

            #line default
            #line hidden

            #line 72 ""
            foreach (var c in RS.Constants)
            {
            #line default
            #line hidden

            #line 73 ""
                this.Write("    ");

            #line default
            #line hidden

            #line 73 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(c));

            #line default
            #line hidden

            #line 73 ""
                this.Write(";\n");

            #line default
            #line hidden

            #line 74 ""
            }

            #line default
            #line hidden

            #line 75 ""
            this.Write("\n\n-- User defined types here\n-- #### USER-DATA-TRAILTYPES-START\n-- #### USER-DATA" +
                       "-TRAILTYPES-END\n\n\nend CUSTOM_TYPES;\n\n");

            #line default
            #line hidden

            #line 84 ""
            if (RS.EnumTypes.Any())
            {
            #line default
            #line hidden

            #line 85 ""
                this.Write("package body CUSTOM_TYPES is\n");

            #line default
            #line hidden

            #line 86 ""
                foreach (var enumtype in RS.EnumTypes)
                {
            #line default
            #line hidden

            #line 87 ""
                    this.Write("    -- converts ");

            #line default
            #line hidden

            #line 87 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(enumtype));

            #line default
            #line hidden

            #line 87 ""
                    this.Write(" into a string\n    pure function str(b: ");

            #line default
            #line hidden

            #line 88 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 88 ""
                    this.Write(") return string is\n    begin\n        return ");

            #line default
            #line hidden

            #line 90 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 90 ""
                    this.Write("\'image(b);\n    end str;\n\n");

            #line default
            #line hidden

            #line 93 ""
                    if (enumtype.IsIrregularEnum)
                    {
            #line default
            #line hidden

            #line 94 ""
                        this.Write("    -- Converts an integer to ");

            #line default
            #line hidden

            #line 94 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 94 ""
                        this.Write("\n    pure function fromValue_");

            #line default
            #line hidden

            #line 95 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 95 ""
                        this.Write("(v: INTEGER) return ");

            #line default
            #line hidden

            #line 95 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 95 ""
                        this.Write(" is\n    begin\n        case v is\n");

            #line default
            #line hidden

            #line 98 ""
                        foreach (var f in RS.GetEnumValues(enumtype))
                        {
            #line default
            #line hidden

            #line 99 ""
                            this.Write("            when ");

            #line default
            #line hidden

            #line 99 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(f.Value));

            #line default
            #line hidden

            #line 99 ""
                            this.Write(" =>\n                return ");

            #line default
            #line hidden

            #line 100 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(f.Key));

            #line default
            #line hidden

            #line 100 ""
                            this.Write(";\n");

            #line default
            #line hidden

            #line 101 ""
                        }

            #line default
            #line hidden

            #line 102 ""
                        this.Write("           when others =>\n               return ");

            #line default
            #line hidden

            #line 103 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetEnumValues(enumtype).First().Key));

            #line default
            #line hidden

            #line 103 ""
                        this.Write(";\n        end case;\n    end fromValue_");

            #line default
            #line hidden

            #line 105 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 105 ""
                        this.Write(";\n\n    -- Converts a ");

            #line default
            #line hidden

            #line 107 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 107 ""
                        this.Write(" to an integer\n    pure function toValue_");

            #line default
            #line hidden

            #line 108 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 108 ""
                        this.Write("(v: ");

            #line default
            #line hidden

            #line 108 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 108 ""
                        this.Write(") return INTEGER is\n    begin\n        case v is\n");

            #line default
            #line hidden

            #line 111 ""
                        foreach (var f in RS.GetEnumValues(enumtype))
                        {
            #line default
            #line hidden

            #line 112 ""
                            this.Write("            when ");

            #line default
            #line hidden

            #line 112 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(f.Key));

            #line default
            #line hidden

            #line 112 ""
                            this.Write(" =>\n                return ");

            #line default
            #line hidden

            #line 113 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(f.Value));

            #line default
            #line hidden

            #line 113 ""
                            this.Write(";\n");

            #line default
            #line hidden

            #line 114 ""
                        }

            #line default
            #line hidden

            #line 115 ""
                        this.Write("           when others =>\n               return ");

            #line default
            #line hidden

            #line 116 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetEnumValues(enumtype).First().Value));

            #line default
            #line hidden

            #line 116 ""
                        this.Write(";\n        end case;\n    end toValue_");

            #line default
            #line hidden

            #line 118 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName()));

            #line default
            #line hidden

            #line 118 ""
                        this.Write(";\n\n");

            #line default
            #line hidden

            #line 120 ""
                    }

            #line default
            #line hidden

            #line 121 ""
                }

            #line default
            #line hidden

            #line 122 ""
                this.Write("\n\n-- User defined bodies here\n-- #### USER-DATA-BODY-START\n-- #### USER-DATA-BODY" +
                           "-END\n\nend CUSTOM_TYPES;\n");

            #line default
            #line hidden

            #line 129 ""
            }

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Exemple #22
0
 /// <summary>
 /// Reads synchronously from the buffered stream.
 /// </summary>
 /// <param name="type">The type of the object to deserialize.</param>
 /// <param name="stream">The <see cref="Stream"/> to read.</param>
 /// <param name="contentHeaders">The <see cref="HttpContentHeaders"/> if available. It may be <c>null</c>.</param>
 /// <param name="formatterLogger">The <see cref="IFormatterLogger"/> to log events to.</param>
 /// <returns>An object of the given type.</returns>
 public virtual object ReadFromStream(Type type, Stream stream, HttpContentHeaders contentHeaders, IFormatterLogger formatterLogger)
 {
     throw new NotSupportedException(RS.Format(Properties.Resources.MediaTypeFormatterCannotReadSync, GetType().Name));
 }
Exemple #23
0
        /// <summary>
        /// Validates whether the content contains an HTTP Request or an HTTP Response.
        /// </summary>
        /// <param name="content">The content to validate.</param>
        /// <param name="isRequest">if set to <c>true</c> if the content is either an HTTP Request or an HTTP Response.</param>
        /// <param name="throwOnError">Indicates whether validation failure should result in an <see cref="Exception"/> or not.</param>
        /// <returns><c>true</c> if content is either an HTTP Request or an HTTP Response</returns>
        internal static bool ValidateHttpMessageContent(HttpContent content, bool isRequest, bool throwOnError)
        {
            if (content == null)
            {
                throw new ArgumentNullException("content");
            }

            MediaTypeHeaderValue contentType = content.Headers.ContentType;

            if (contentType != null)
            {
                if (!contentType.MediaType.Equals(DefaultMediaType, StringComparison.OrdinalIgnoreCase))
                {
                    if (throwOnError)
                    {
                        throw new ArgumentException(
                                  RS.Format(Properties.Resources.HttpMessageInvalidMediaType, FormattingUtilities.HttpContentType.Name,
                                            isRequest ? DefaultRequestMediaType : DefaultResponseMediaType),
                                  "content");
                    }
                    else
                    {
                        return(false);
                    }
                }

                foreach (NameValueHeaderValue parameter in contentType.Parameters)
                {
                    if (parameter.Name.Equals(MsgTypeParameter, StringComparison.OrdinalIgnoreCase))
                    {
                        string msgType = FormattingUtilities.UnquoteToken(parameter.Value);
                        if (!msgType.Equals(isRequest ? DefaultRequestMsgType : DefaultResponseMsgType, StringComparison.OrdinalIgnoreCase))
                        {
                            if (throwOnError)
                            {
                                throw new ArgumentException(
                                          RS.Format(Properties.Resources.HttpMessageInvalidMediaType, FormattingUtilities.HttpContentType.Name, isRequest ? DefaultRequestMediaType : DefaultResponseMediaType),
                                          "content");
                            }
                            else
                            {
                                return(false);
                            }
                        }

                        return(true);
                    }
                }
            }

            if (throwOnError)
            {
                throw new ArgumentException(
                          RS.Format(Properties.Resources.HttpMessageInvalidMediaType, FormattingUtilities.HttpContentType.Name, isRequest ? DefaultRequestMediaType : DefaultResponseMediaType),
                          "content");
            }
            else
            {
                return(false);
            }
        }
Exemple #24
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 9 ""
            this.Write(@"library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

-- library SYSTEM_TYPES;
use work.SYSTEM_TYPES.ALL;

-- library CUSTOM_TYPES;
use work.CUSTOM_TYPES.ALL;

-- User defined packages here
-- #### USER-DATA-IMPORTS-START
-- #### USER-DATA-IMPORTS-END

entity ");

            #line default
            #line hidden

            #line 23 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Network.Name));

            #line default
            #line hidden

            #line 23 ""
            this.Write(" is\n  port(\n\n");

            #line default
            #line hidden

            #line 26 ""

            var feedbacks = RS.FeedbackBusses.ToArray();
            var processes = Network.Processes.Where(x => !x.IsSimulation).ToArray();


            #line default
            #line hidden

            #line 30 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 31 ""
            foreach (var bus in Network.Busses.Where(x => x.IsTopLevelInput || x.IsTopLevelOutput))
            {
                var signaltype = "inout";

                if (bus.IsTopLevelInput && !bus.IsTopLevelOutput)
                {
                    signaltype = "in";
                }
                else if (bus.IsTopLevelOutput && !bus.IsTopLevelInput)
                {
                    signaltype = "out";
                }


            #line default
            #line hidden

            #line 39 ""
                this.Write("    -- Top-level bus ");

            #line default
            #line hidden

            #line 39 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 39 ""
                this.Write(" signals\n");

            #line default
            #line hidden

            #line 40 ""
                foreach (var signal in bus.Signals)
                {
            #line default
            #line hidden

            #line 41 ""
                    this.Write("    ");

            #line default
            #line hidden

            #line 41 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(bus.InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 41 ""
                    this.Write(": ");

            #line default
            #line hidden

            #line 41 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(signaltype));

            #line default
            #line hidden

            #line 41 ""
                    this.Write(" ");

            #line default
            #line hidden

            #line 41 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 41 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 42 ""
                }

            #line default
            #line hidden

            #line 43 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 44 ""
            }

            #line default
            #line hidden

            #line 45 ""
            this.Write("\n");

            #line default
            #line hidden

            #line 46 ""
            foreach (var bus in Network.Busses.Where(x => !(x.IsTopLevelInput || x.IsTopLevelOutput || x.IsInternal)))
            {
            #line default
            #line hidden

            #line 47 ""
                this.Write("    -- Interconnection bus ");

            #line default
            #line hidden

            #line 47 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 47 ""
                this.Write(" signals\n");

            #line default
            #line hidden

            #line 48 ""
                foreach (var signal in bus.Signals)
                {
            #line default
            #line hidden

            #line 49 ""
                    this.Write("    ");

            #line default
            #line hidden

            #line 49 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(bus.InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 49 ""
                    this.Write(": inout ");

            #line default
            #line hidden

            #line 49 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 49 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 50 ""
                }

            #line default
            #line hidden

            #line 51 ""
            }

            #line default
            #line hidden

            #line 52 ""
            this.Write(@"
    -- User defined signals here
    -- #### USER-DATA-ENTITYSIGNALS-START
    -- #### USER-DATA-ENTITYSIGNALS-END

    -- Enable signal
    ENB : in Std_logic;

    -- Finished signal
    FIN : out Std_logic;

	-- Reset signal
    RST : in Std_logic;

	-- Clock signal
	CLK : in Std_logic
  );
end ");

            #line default
            #line hidden

            #line 69 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Network.Name));

            #line default
            #line hidden

            #line 69 ""
            this.Write(";\n\narchitecture RTL of ");

            #line default
            #line hidden

            #line 71 ""
            this.Write(this.ToStringHelper.ToStringWithCulture(Network.Name));

            #line default
            #line hidden

            #line 71 ""
            this.Write(" is  \n  -- User defined signals here\n  -- #### USER-DATA-SIGNALS-START\n  -- #### " +
                       "USER-DATA-SIGNALS-END\n\n");

            #line default
            #line hidden

            #line 76 ""
            if (feedbacks.Any())
            {
            #line default
            #line hidden

            #line 77 ""
                this.Write("  -- Feedback signals\n");

            #line default
            #line hidden

            #line 78 ""
                foreach (var signal in feedbacks.SelectMany(x => x.Signals))
                {
            #line default
            #line hidden

            #line 79 ""
                    this.Write("    signal ");

            #line default
            #line hidden

            #line 79 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("current_" + (signal.Parent as AST.Bus).InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 79 ""
                    this.Write(", ");

            #line default
            #line hidden

            #line 79 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("next_" + (signal.Parent as AST.Bus).InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 79 ""
                    this.Write(": ");

            #line default
            #line hidden

            #line 79 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal)));

            #line default
            #line hidden

            #line 79 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 80 ""
                }

            #line default
            #line hidden

            #line 81 ""
            }

            #line default
            #line hidden

            #line 82 ""
            this.Write("\n  -- Process ready triggers\n");

            #line default
            #line hidden

            #line 84 ""
            foreach (var p in processes)
            {
            #line default
            #line hidden

            #line 85 ""
                this.Write("\n  signal ");

            #line default
            #line hidden

            #line 86 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + p.InstanceName)));

            #line default
            #line hidden

            #line 86 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(p.IsClocked ? string.Empty : ", " + Naming.ToValidName("RDY_" + p.InstanceName)));

            #line default
            #line hidden

            #line 86 ""
                this.Write(" : std_logic;\n");

            #line default
            #line hidden

            #line 87 ""
            }

            #line default
            #line hidden

            #line 88 ""
            this.Write("\n\n\n\n  -- The primary ready driver signal\n  signal RDY : std_logic;\n\nbegin\n\n");

            #line default
            #line hidden

            #line 97 ""
            foreach (var p in processes)
            {
            #line default
            #line hidden

            #line 98 ""
                this.Write("\n    -- Entity  ");

            #line default
            #line hidden

            #line 99 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(p.InstanceName));

            #line default
            #line hidden

            #line 99 ""
                this.Write(" signals\n    ");

            #line default
            #line hidden

            #line 100 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(p.InstanceName)));

            #line default
            #line hidden

            #line 100 ""
                this.Write(": entity work.");

            #line default
            #line hidden

            #line 100 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(p.Name)));

            #line default
            #line hidden

            #line 100 ""
                this.Write("\n");

            #line default
            #line hidden

            #line 101 ""
                var lastel = p.SharedVariables.Cast <object>().Concat(p.SharedSignals).LastOrDefault();
                if (lastel != null)
                {
            #line default
            #line hidden

            #line 104 ""
                    this.Write("    generic map(\n");

            #line default
            #line hidden

            #line 105 ""
                    foreach (var variable in p.SharedVariables)
                    {
            #line default
            #line hidden

            #line 106 ""
                        this.Write("        ");

            #line default
            #line hidden

            #line 106 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name)));

            #line default
            #line hidden

            #line 106 ""
                        this.Write(" => ");

            #line default
            #line hidden

            #line 106 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(variable)));

            #line default
            #line hidden

            #line 106 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ","));

            #line default
            #line hidden

            #line 106 ""
                        this.Write("\n");

            #line default
            #line hidden

            #line 107 ""
                    }

            #line default
            #line hidden

            #line 108 ""
                    foreach (var variable in p.SharedSignals)
                    {
            #line default
            #line hidden

            #line 109 ""
                        this.Write("        ");

            #line default
            #line hidden

            #line 109 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name)));

            #line default
            #line hidden

            #line 109 ""
                        this.Write(" => ");

            #line default
            #line hidden

            #line 109 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(variable)));

            #line default
            #line hidden

            #line 109 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ","));

            #line default
            #line hidden

            #line 109 ""
                        this.Write("\n");

            #line default
            #line hidden

            #line 110 ""
                    }

            #line default
            #line hidden

            #line 111 ""
                    this.Write("    )\n");

            #line default
            #line hidden

            #line 112 ""
                }

            #line default
            #line hidden

            #line 113 ""
                this.Write("    port map (\n");

            #line default
            #line hidden

            #line 114 ""
                foreach (var bus in p.InputBusses.Union(p.OutputBusses))
                {
                    var isInput  = p.InputBusses.Contains(bus);
                    var isOutput = p.OutputBusses.Contains(bus);
                    var isBoth   = isInput && isOutput;
                    var type     = "Input/Output";
                    if (isInput && !isOutput)
                    {
                        type = "Input";
                    }
                    else if (isOutput && !isInput)
                    {
                        type = "Output";
                    }

                    var output_prefix = string.Empty;
                    var input_prefix  = string.Empty;
                    if (feedbacks.Contains(bus))
                    {
                        input_prefix = output_prefix = "current_";
                    }

                    var busname = RS.GetLocalBusName(bus, p);
                    var signals = bus.Signals.AsEnumerable();

                    if (isOutput && !isBoth)
                    {
                        signals = RS.WrittenSignals(p, bus);
                    }


            #line default
            #line hidden

            #line 135 ""
                    this.Write("        -- ");

            #line default
            #line hidden

            #line 135 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(type));

            #line default
            #line hidden

            #line 135 ""
                    this.Write(" bus ");

            #line default
            #line hidden

            #line 135 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name));

            #line default
            #line hidden

            #line 135 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 136 ""
                    foreach (var signal in signals)
                    {
            #line default
            #line hidden

            #line 137 ""
                        if (isInput || isBoth)
                        {
            #line default
            #line hidden

            #line 138 ""
                            this.Write("        ");

            #line default
            #line hidden

            #line 138 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 138 ""
                            this.Write(" => ");

            #line default
            #line hidden

            #line 138 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(input_prefix + bus.InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 138 ""
                            this.Write(",\n");

            #line default
            #line hidden

            #line 139 ""
                        }
                        else
                        {
            #line default
            #line hidden

            #line 140 ""
                            this.Write("        ");

            #line default
            #line hidden

            #line 140 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 140 ""
                            this.Write(" => ");

            #line default
            #line hidden

            #line 140 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(output_prefix + bus.InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 140 ""
                            this.Write(",\n");

            #line default
            #line hidden

            #line 141 ""
                        }

            #line default
            #line hidden

            #line 142 ""
                    }

            #line default
            #line hidden

            #line 143 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 144 ""
                    if (isBoth)
                    {
            #line default
            #line hidden

            #line 145 ""
                        foreach (var signal in bus.Signals)
                        {
            #line default
            #line hidden

            #line 146 ""
                            this.Write("        ");

            #line default
            #line hidden

            #line 146 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("out_" + busname + "_" + signal.Name)));

            #line default
            #line hidden

            #line 146 ""
                            this.Write(" => ");

            #line default
            #line hidden

            #line 146 ""
                            this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("next_" + bus.InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 146 ""
                            this.Write(",\n");

            #line default
            #line hidden

            #line 147 ""
                        }

            #line default
            #line hidden

            #line 148 ""
                    }

            #line default
            #line hidden

            #line 149 ""
                    this.Write("\n");

            #line default
            #line hidden

            #line 150 ""
                }

            #line default
            #line hidden

            #line 151 ""
                this.Write("\n        CLK => CLK,\n        RDY => ");

            #line default
            #line hidden

            #line 153 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(p.IsClocked ? "RDY" : Naming.ToValidName("RDY_" + p.InstanceName)));

            #line default
            #line hidden

            #line 153 ""
                this.Write(",\n        FIN => ");

            #line default
            #line hidden

            #line 154 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + p.InstanceName)));

            #line default
            #line hidden

            #line 154 ""
                this.Write(",\n        ENB => ENB,\n        RST => RST\n    );\n\n");

            #line default
            #line hidden

            #line 159 ""
            }

            #line default
            #line hidden

            #line 160 ""
            this.Write("\n    -- Connect ready signals\n");

            #line default
            #line hidden

            #line 162 ""
            foreach (var p in processes)
            {
                var parents = RS.DependsOn(p).Select(x => x.InstanceName).Distinct().ToArray();
                if (parents.Length == 0)
                {
                    if (!p.IsClocked)
                    {
            #line default
            #line hidden

            #line 166 ""
                        this.Write("    ");

            #line default
            #line hidden

            #line 166 ""
                        this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("RDY_" + p.InstanceName)));

            #line default
            #line hidden

            #line 166 ""
                        this.Write(" <= RDY;\n");

            #line default
            #line hidden

            #line 167 ""
                    }
                }
                else if (parents.Length == 1)
                {
            #line default
            #line hidden

            #line 169 ""
                    this.Write("    ");

            #line default
            #line hidden

            #line 169 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("RDY_" + p.InstanceName)));

            #line default
            #line hidden

            #line 169 ""
                    this.Write(" <= ");

            #line default
            #line hidden

            #line 169 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + parents.First())));

            #line default
            #line hidden

            #line 169 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 170 ""
                }
                else
                {
            #line default
            #line hidden

            #line 171 ""
                    this.Write("    -- Setup the RDY signal for ");

            #line default
            #line hidden

            #line 171 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(p.InstanceName));

            #line default
            #line hidden

            #line 171 ""
                    this.Write("\n    process(\n      ");

            #line default
            #line hidden

            #line 173 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(", " + Environment.NewLine + "      ", parents.Select(x => string.Format(Naming.ToValidName("FIN_" + x))))));

            #line default
            #line hidden

            #line 173 ""
                    this.Write("\n    )\n    begin\n      if ");

            #line default
            #line hidden

            #line 176 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(" AND ", parents.Skip(1).Select(x => string.Format("{0} = {1}", Naming.ToValidName("FIN_" + parents.First()), Naming.ToValidName("FIN_" + x))))));

            #line default
            #line hidden

            #line 176 ""
                    this.Write(" then\n        ");

            #line default
            #line hidden

            #line 177 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("RDY_" + p.InstanceName)));

            #line default
            #line hidden

            #line 177 ""
                    this.Write(" <= ");

            #line default
            #line hidden

            #line 177 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + parents.First())));

            #line default
            #line hidden

            #line 177 ""
                    this.Write(";\n      end if;\n    end process;\n");

            #line default
            #line hidden

            #line 180 ""
                }

            #line default
            #line hidden

            #line 181 ""
            }

            #line default
            #line hidden

            #line 182 ""
            this.Write("\n    -- Setup the FIN feedback signals\n");

            #line default
            #line hidden

            #line 184 ""
            if (processes.Length == 1)
            {
            #line default
            #line hidden

            #line 185 ""
                this.Write("    FIN <= ");

            #line default
            #line hidden

            #line 185 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + processes.First().InstanceName)));

            #line default
            #line hidden

            #line 185 ""
                this.Write(";\n");

            #line default
            #line hidden

            #line 186 ""
            }
            else
            {
            #line default
            #line hidden

            #line 187 ""
                this.Write("    process(\n      ");

            #line default
            #line hidden

            #line 188 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(", " + Environment.NewLine + "      ", processes.Select(x => Naming.ToValidName("FIN_" + x.InstanceName)))));

            #line default
            #line hidden

            #line 188 ""
                this.Write("\n    )\n    begin\n      if ");

            #line default
            #line hidden

            #line 191 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(" AND ", processes.Skip(1).Select(x => string.Format("{0} = {1}", Naming.ToValidName("FIN_" + processes.First().InstanceName), Naming.ToValidName("FIN_" + x.InstanceName))))));

            #line default
            #line hidden

            #line 191 ""
                this.Write(" then\n        FIN <= ");

            #line default
            #line hidden

            #line 192 ""
                this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + processes.First().InstanceName)));

            #line default
            #line hidden

            #line 192 ""
                this.Write(";\n      end if;\n    end process;\n");

            #line default
            #line hidden

            #line 195 ""
            }

            #line default
            #line hidden

            #line 196 ""
            this.Write(@"
    -- Propagate all clocked and feedback signals
    process(
        CLK,
        RST)

        variable readyflag: std_logic;
    begin
        if RST = '1' then
            RDY <= '0';
            readyflag := '1';
        elsif rising_edge(CLK) then
            if ENB = '1' then
                readyflag := not readyflag;
                RDY <= readyflag;
");

            #line default
            #line hidden

            #line 211 ""
            if (feedbacks.Any())
            {
            #line default
            #line hidden

            #line 212 ""
                this.Write("                -- Forward feedback signals\n");

            #line default
            #line hidden

            #line 213 ""
                foreach (var signal in feedbacks.SelectMany(x => x.Signals))
                {
            #line default
            #line hidden

            #line 214 ""
                    this.Write("                current_");

            #line default
            #line hidden

            #line 214 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName((signal.Parent as AST.Bus).InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 214 ""
                    this.Write(" <= next_");

            #line default
            #line hidden

            #line 214 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName((signal.Parent as AST.Bus).InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 214 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 215 ""
                }

            #line default
            #line hidden

            #line 216 ""
            }

            #line default
            #line hidden

            #line 217 ""
            this.Write("            end if;\n        end if;\n    end process;\n\n");

            #line default
            #line hidden

            #line 221 ""
            if (feedbacks.Where(x => x.IsTopLevelOutput).Any())
            {
            #line default
            #line hidden

            #line 222 ""
                this.Write("    -- Send feedback outputs to the actual output\n");

            #line default
            #line hidden

            #line 223 ""
                foreach (var signal in feedbacks.Where(x => x.IsTopLevelOutput).SelectMany(x => x.Signals))
                {
            #line default
            #line hidden

            #line 224 ""
                    this.Write("    ");

            #line default
            #line hidden

            #line 224 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName((signal.Parent as AST.Bus).InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 224 ""
                    this.Write(" <= ");

            #line default
            #line hidden

            #line 224 ""
                    this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("next_" + (signal.Parent as AST.Bus).InstanceName + "_" + signal.Name)));

            #line default
            #line hidden

            #line 224 ""
                    this.Write(";\n");

            #line default
            #line hidden

            #line 225 ""
                }

            #line default
            #line hidden

            #line 226 ""
            }

            #line default
            #line hidden

            #line 227 ""
            this.Write("\n\n-- User defined processes here\n-- #### USER-DATA-CODE-START\n-- #### USER-DATA-C" +
                       "ODE-END\n\nend RTL;");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        protected override async Task <HttpResponseMessage> CreateItemPutResponse(FileSystemInfo info, string localFilePath, bool itemExists)
        {
            // Check that we have a matching conditional If-Match request for existing resources
            if (itemExists)
            {
                // Get current etag
                EntityTagHeaderValue currentEtag = GetCurrentEtag(info);

                // Existing resources require an etag to be updated.
                if (Request.Headers.IfMatch == null)
                {
                    HttpResponseMessage missingIfMatchResponse = Request.CreateErrorResponse(
                        HttpStatusCode.PreconditionFailed, Resources.VfsController_MissingIfMatch);
                    return(missingIfMatchResponse);
                }

                bool isMatch = false;
                foreach (EntityTagHeaderValue etag in Request.Headers.IfMatch)
                {
                    if (currentEtag.Equals(etag) || etag == EntityTagHeaderValue.Any)
                    {
                        isMatch = true;
                        break;
                    }
                }

                if (!isMatch)
                {
                    HttpResponseMessage conflictFileResponse = Request.CreateErrorResponse(
                        HttpStatusCode.PreconditionFailed, Resources.VfsController_EtagMismatch);
                    conflictFileResponse.Headers.ETag = currentEtag;
                    return(conflictFileResponse);
                }
            }

            // Save file

            try
            {
                using (Stream fileStream = GetFileWriteStream(localFilePath, fileExists: itemExists))
                {
                    try
                    {
                        await Request.Content.CopyToAsync(fileStream);
                    } catch (Exception ex)
                    {
                        Tracer.TraceError(ex);
                        HttpResponseMessage conflictResponse = Request.CreateErrorResponse(
                            HttpStatusCode.Conflict,
                            RS.Format(Resources.VfsController_WriteConflict, localFilePath),
                            ex);

                        return(conflictResponse);
                    }
                }

                // Return either 204 No Content or 201 Created response
                HttpResponseMessage successFileResponse =
                    Request.CreateResponse(itemExists ? HttpStatusCode.NoContent : HttpStatusCode.Created);

                // Set updated etag for the file
                successFileResponse.Headers.ETag = GetUpdatedEtag(localFilePath);
                return(successFileResponse);
            }
            catch (Exception e)
            {
                Tracer.TraceError(e);
                HttpResponseMessage errorResponse =
                    Request.CreateErrorResponse(HttpStatusCode.Conflict,
                                                RS.Format(Resources.VfsController_WriteConflict, localFilePath), e);

                return(errorResponse);
            }
        }
Exemple #26
0
        protected override async Task <IActionResult> CreateItemPutResponse(FileSystemInfoBase info, string localFilePath, bool itemExists)
        {
            // Check that we have a matching conditional If-Match request for existing resources
            if (itemExists)
            {
                var requestHeaders  = Request.GetTypedHeaders();
                var responseHeaders = Response.GetTypedHeaders();

                // Get current etag
                EntityTagHeaderValue currentEtag = CreateEntityTag(info);

                // Existing resources require an etag to be updated.
                if (requestHeaders.IfMatch == null)
                {
                    return(StatusCode(StatusCodes.Status412PreconditionFailed, Resources.VfsController_MissingIfMatch));
                }

                bool isMatch = false;
                foreach (EntityTagHeaderValue etag in requestHeaders.IfMatch)
                {
                    if (currentEtag.Compare(etag, false) || etag == EntityTagHeaderValue.Any)
                    {
                        isMatch = true;
                        break;
                    }
                }

                if (!isMatch)
                {
                    responseHeaders.ETag = currentEtag;
                    return(StatusCode(StatusCodes.Status412PreconditionFailed, Resources.VfsController_EtagMismatch));
                }
            }

            // Save file
            try
            {
                using (Stream fileStream = GetFileWriteStream(localFilePath, fileExists: itemExists))
                {
                    try
                    {
                        await Request.Body.CopyToAsync(fileStream);
                    }
                    catch (Exception ex)
                    {
                        Tracer.TraceError(ex);
                        return(StatusCode(
                                   StatusCodes.Status409Conflict,
                                   RS.Format(Resources.VfsController_WriteConflict, localFilePath, ex.Message)));
                    }
                }

                // Return either 204 No Content or 201 Created response

                // Set updated etag for the file
                info.Refresh();
                Response.SetEntityTagHeader(CreateEntityTag(info), info.LastWriteTimeUtc);
                return(itemExists ? NoContent() : StatusCode(StatusCodes.Status201Created));
            }
            catch (Exception ex)
            {
                Tracer.TraceError(ex);
                return(StatusCode(StatusCodes.Status409Conflict, RS.Format(Resources.VfsController_WriteConflict, localFilePath, ex.Message)));
            }
        }
Exemple #27
0
        /// <summary>
        /// Checks if the <see cref="g1"/> version (or subset versions) is equivalent to <see cref="g2"/>.
        /// </summary>
        /// <param name="g1">Version (set)</param>
        /// <param name="g2">Individual version</param>
        public static bool Contains(this GameVersion g1, GameVersion g2)
        {
            if (g1 == g2 || g1 == Any)
            {
                return(true);
            }

            switch (g1)
            {
            case RB:
                return(g2 == RD || g2 == BU || g2 == GN);

            case Stadium:
            case EventsGBGen1:
            case VCEvents:
            case RBY:
                return(RB.Contains(g2) || g2 == YW);

            case Gen1:
                return(RBY.Contains(g2) || g2 == Stadium || g2 == EventsGBGen1 || g2 == VCEvents);

            case GS: return(g2 == GD || g2 == SV);

            case Stadium2:
            case EventsGBGen2:
            case GSC:
                return(GS.Contains(g2) || g2 == C);

            case Gen2:
                return(GSC.Contains(g2) || g2 == Stadium2 || g2 == EventsGBGen2);

            case GBCartEraOnly:
                return(g2 == Stadium || g2 == Stadium2 || g2 == EventsGBGen1 || g2 == EventsGBGen2);

            case RS: return(g2 == R || g2 == S);

            case RSE:
                return(RS.Contains(g2) || g2 == E);

            case FRLG: return(g2 == FR || g2 == LG);

            case COLO:
            case XD: return(g2 == CXD);

            case CXD: return(g2 == COLO || g2 == XD);

            case RSBOX: return(RS.Contains(g2) || g2 == E || FRLG.Contains(g2));

            case Gen3:
                return(RSE.Contains(g2) || FRLG.Contains(g2) || CXD.Contains(g2) || g2 == RSBOX);

            case DP: return(g2 == D || g2 == P);

            case HGSS: return(g2 == HG || g2 == SS);

            case DPPt:
                return(DP.Contains(g2) || g2 == Pt);

            case BATREV: return(DP.Contains(g2) || g2 == Pt || HGSS.Contains(g2));

            case Gen4:
                return(DPPt.Contains(g2) || HGSS.Contains(g2) || g2 == BATREV);

            case BW: return(g2 == B || g2 == W);

            case B2W2: return(g2 == B2 || g2 == W2);

            case Gen5:
                return(BW.Contains(g2) || B2W2.Contains(g2));

            case XY: return(g2 == X || g2 == Y);

            case ORAS: return(g2 == OR || g2 == AS);

            case Gen6:
                return(XY.Contains(g2) || ORAS.Contains(g2));

            case SM:
                return(g2 == SN || g2 == MN);

            case USUM:
                return(g2 == US || g2 == UM);

            case GG:
                return(g2 == GP || g2 == GE || g2 == GO);

            case Gen7:
                return(SM.Contains(g2) || USUM.Contains(g2) || GG.Contains(g2));

            default: return(false);
            }
        }
Exemple #28
0
        public void SupportedMediaTypesInsertThrowsWithMediaRange(MediaTypeHeaderValue mediaType)
        {
            MockMediaTypeFormatter            formatter           = new MockMediaTypeFormatter();
            Collection <MediaTypeHeaderValue> supportedMediaTypes = formatter.SupportedMediaTypes;

            Assert.ThrowsArgument(() => supportedMediaTypes.Insert(0, mediaType), "item", RS.Format(Properties.Resources.CannotUseMediaRangeForSupportedMediaType, typeof(MediaTypeHeaderValue).Name, mediaType.MediaType));
        }
Exemple #29
0
        protected override async Task <HttpResponseMessage> CreateFileDeleteResponse(FileInfoBase info)
        {
            HttpResponseMessage response;

            if (!PrepareBranch(true, out response))
            {
                return(response);
            }

            response = await base.CreateFileDeleteResponse(info);

            // Get the query parameters
            QueryParameters parameters = new QueryParameters(this.Request);

            // Commit to local branch
            _repository.Commit(parameters.Message, authorName: null);

            bool rebasing = false;

            try
            {
                // Only rebase if VFS branch isn't up-to-date already
                if (!_repository.DoesBranchContainCommit(VfsUpdateBranch, MasterBranch))
                {
                    // Rebase to get updates from master while checking whether we get a conflict
                    rebasing = true;
                    _repository.Rebase(MasterBranch);
                }

                // Switch content back to master
                _repository.UpdateRef(VfsUpdateBranch);
            }
            catch (CommandLineException commandLineException)
            {
                Tracer.TraceError(commandLineException);

                // Abort the ongoing rebase operation
                try
                {
                    if (rebasing)
                    {
                        _repository.RebaseAbort();
                    }
                }
                finally
                {
                    _repository.Update();
                }

                // The rebase resulted in a conflict.
                HttpResponseMessage conflictResponse = Request.CreateErrorResponse(HttpStatusCode.Conflict, commandLineException);
                return(conflictResponse);
            }

            // Get current commit ID
            string currentId = _repository.CurrentId;

            // Deploy changes unless request indicated to not deploy
            if (!parameters.NoDeploy)
            {
                DeployResult result = await DeployChangesAsync(currentId);

                if (result != null && result.Status != DeployStatus.Success)
                {
                    HttpResponseMessage deploymentErrorResponse =
                        Request.CreateErrorResponse(HttpStatusCode.InternalServerError, RS.Format(Resources.VfsScmController_DeploymentError, result.StatusText));
                    return(deploymentErrorResponse);
                }
            }

            // Delete succeeded. We add the etag as is has been updated as a result of the delete
            // This allows a client to keep track of the latest etag even for deletes.
            response.Headers.ETag = CreateEtag(currentId);
            return(response);
        }
Exemple #30
0
 public static Exception OAuthLoginConfigFileNotExist(string configFile)
 {
     return(new FileNotFoundException(RS.get(ResourceKey.ERRORS_OAuthLoginConfigFileNotExist), configFile));
 }