Exemplo n.º 1
0
        public void Begin( string status, IDictionary<string, string> headers )
        {
            var builder = new DelimitedBuilder("\r\n");
            var headerBuilder = new HeaderBuilder( headers );

            builder.AppendFormat( "HTTP/1.1 {0}", status );

            headers.ForEach( x => builder.AppendFormat( "{0}: {1}", x.Key, x.Value ) );
            builder.Append( "\r\n" );
            var header = builder.ToString();
            var headerBuffer = Encoding.UTF8.GetBytes( header );
			PendingWrite.Reset();
            OnNext( new ArraySegment<byte>(headerBuffer), () => PendingWrite.Set() );
        }
Exemplo n.º 2
0
 private static bool ConstantExpected( DelimitedBuilder builder )
 {
     var symbols = new[] {"{", "TO ", ":", "[", @"\+", @"\-", @"\\", @"\*"};
     var temp = builder.ToString();
     var last = new string( temp.Skip( temp.Length - 3 ).Take( 3 ).ToArray() );
     return symbols.Any( x => last.EndsWith( x ) );
 }
Exemplo n.º 3
0
 private static void ProcessMemberAccess( Expression expr, string prefix, DelimitedBuilder builder )
 {
     var symbols = new[] {"{", "TO ", ":", "[", @"\+", @"\-", @"\\", @"\*"};
     var memberExpr = expr as MemberExpression;
     var temp = builder.ToString();
     var last = new string( temp.Skip( temp.Length - 3 ).Take( 3 ).ToArray() );
     if ( ConstantExpected( builder ) )
     {
         var memberValue = Expression.Lambda( expr ).Compile().DynamicInvoke();
         builder.Append( HandleFormatting( memberValue ) );
     }
     else
     {
         var memberName = GetMemberName( memberExpr );
         var value = string.IsNullOrEmpty( prefix )
                         ? memberName
                         : "{0}.{1}".AsFormat( prefix, memberName );
         builder.Append( value );
     }
 }