Inheritance: IDisposable, IRExpressionEvaluator
Example #1
0
            protected Request(RHost host, Message message) {
                Id = message.Id;
                MessageName = message.Name;
                Json = message.Json;

                host._requests[Id] = this;
            }
Example #2
0
            public EvaluationRequest(RHost host, string expression, REvaluationKind kind, out JArray message)
            {
                Expression = expression;
                Kind       = kind;

                var nameBuilder = new StringBuilder("=");

                if (kind.HasFlag(REvaluationKind.Reentrant))
                {
                    nameBuilder.Append('@');
                }
                if (kind.HasFlag(REvaluationKind.Cancelable))
                {
                    nameBuilder.Append('/');
                }
                if (kind.HasFlag(REvaluationKind.BaseEnv))
                {
                    nameBuilder.Append('B');
                }
                if (kind.HasFlag(REvaluationKind.EmptyEnv))
                {
                    nameBuilder.Append('E');
                }
                if (kind.HasFlag(REvaluationKind.NoResult))
                {
                    nameBuilder.Append('0');
                }
                MessageName = nameBuilder.ToString();

                expression = expression.Replace("\r\n", "\n");

                message = host.CreateMessage(out Id, MessageName, expression);
            }
Example #3
0
            public override void Handle(RHost host, Message response)
            {
                response.ExpectArguments(1, 3);
                var firstArg = response[0] as JValue;

                if (firstArg != null && firstArg.Value == null)
                {
                    CompletionSource.TrySetCanceled();
                    return;
                }

                response.ExpectArguments(3);
                var parseStatus = response.GetEnum <RParseStatus>(0, "parseStatus", parseStatusNames);
                var error       = response.GetString(1, "error", allowNull: true);

                REvaluationResult result;

                if (Kind.HasFlag(REvaluationKind.NoResult))
                {
                    result = new REvaluationResult(error, parseStatus);
                }
                else if (Kind.HasFlag(REvaluationKind.RawResult))
                {
                    result = new REvaluationResult(response.Blob, error, parseStatus);
                }
                else
                {
                    result = new REvaluationResult(response[2], error, parseStatus);
                }

                CompletionSource.TrySetResult(result);
            }
Example #4
0
            protected Request(RHost host, Message message)
            {
                Id          = message.Id;
                MessageName = message.Name;
                Json        = message.Json;

                host._requests[Id] = this;
            }
Example #5
0
        static void Main(string[] args)
        {
            Console.CancelKeyPress += Console_CancelKeyPress;
            var host = new RHost("Program", new Program());

            host.CreateAndRun(args[0]).GetAwaiter().GetResult();
            _evaluator = host;
        }
            public static async Task <CreateBlobRequest> CreateAsync(RHost host, CancellationToken cancellationToken)
            {
                var message = host.CreateRequestMessage("?CreateBlob", new JArray());
                var request = new CreateBlobRequest(host, message, cancellationToken);

                await host.SendAsync(message, cancellationToken);

                return(request);
            }
Example #7
0
            /// <summary>
            /// Appends data to the end of the blob
            /// </summary>
            public static async Task <BlobWriteRequest> WriteAsync(RHost host, ulong blobId, byte[] data, long position, CancellationToken cancellationToken)
            {
                var message = host.CreateRequestMessage("?WriteBlob", new JArray {
                    blobId, position
                }, data);
                var request = new BlobWriteRequest(host, message, cancellationToken);
                await host.SendAsync(message, cancellationToken);

                return(request);
            }
Example #8
0
            public static async Task <BlobReadRequest> ReadAsync(RHost host, ulong blobId, long position, long count, CancellationToken cancellationToken)
            {
                var message = host.CreateRequestMessage("?ReadBlob", new JArray {
                    blobId, position, count
                });
                var request = new BlobReadRequest(host, message, cancellationToken);
                await host.SendAsync(message, cancellationToken);

                return(request);
            }
Example #9
0
            public static async Task <GetBlobRequest> SendAsync(RHost host, ulong blobId, CancellationToken cancellationToken)
            {
                var message = host.CreateMessage("?GetBlob", ulong.MaxValue, new JArray {
                    blobId
                });
                var request = new GetBlobRequest(host, message, cancellationToken);
                await host.SendAsync(message, cancellationToken);

                return(request);
            }
Example #10
0
            public static async Task <BlobSizeRequest> SetSizeAsync(RHost host, ulong blobId, long size, CancellationToken cancellationToken)
            {
                var message = host.CreateRequestMessage("?SetBlobSize", new JArray {
                    blobId, size
                });
                var request = new BlobSizeRequest(host, message, cancellationToken);
                await host.SendAsync(message, cancellationToken);

                return(request);
            }
Example #11
0
            public static async Task <EvaluationRequest> SendAsync(RHost host, string expression, REvaluationKind kind, CancellationToken cancellationToken)
            {
                var nameBuilder = new StringBuilder("?=");

                if (kind.HasFlag(REvaluationKind.Reentrant))
                {
                    nameBuilder.Append('@');
                }
                if (kind.HasFlag(REvaluationKind.Cancelable))
                {
                    nameBuilder.Append('/');
                }
                if (kind.HasFlag(REvaluationKind.BaseEnv))
                {
                    nameBuilder.Append('B');
                }
                if (kind.HasFlag(REvaluationKind.EmptyEnv))
                {
                    nameBuilder.Append('E');
                }
                if (kind.HasFlag(REvaluationKind.NoResult))
                {
                    nameBuilder.Append('0');
                }
                if (kind.HasFlag(REvaluationKind.RawResult))
                {
                    nameBuilder.Append('r');
                }
                string messageName = nameBuilder.ToString();

                expression = expression.Replace("\r\n", "\n");

                var message = host.CreateMessage(messageName, ulong.MaxValue, new JArray {
                    expression
                });
                var request = new EvaluationRequest(host, message, kind, cancellationToken);

                await host.SendAsync(message, cancellationToken);

                return(request);
            }
Example #12
0
 private EvaluationRequest(RHost host, Message message, REvaluationKind kind, CancellationToken cancellationToken)
     : base(host, message, cancellationToken)
 {
     Kind = kind;
 }
Example #13
0
            public override void Handle(RHost host, Message response)
            {
                long size = response.GetInt64(0, "blob_size");

                CompletionSource.TrySetResult(size);
            }
Example #14
0
 private BlobSizeRequest(RHost host, Message message, CancellationToken cancellationToken)
     : base(host, message, cancellationToken)
 {
 }
Example #15
0
 static void Main(string[] args) {
     Console.CancelKeyPress += Console_CancelKeyPress;
     var host = new RHost("Program", new Program());
     host.CreateAndRun(args[0]).GetAwaiter().GetResult();
     _evaluator = host;
 }
Example #16
0
            public override void Handle(RHost host, Message response)
            {
                ulong id = response.GetUInt64(0, "blob_id");

                CompletionSource.TrySetResult(id);
            }
Example #17
0
 public abstract void Handle(RHost host, Message response);
Example #18
0
 public static Task <BlobReadRequest> ReadAllAsync(RHost host, ulong blobId, CancellationToken cancellationToken)
 {
     return(ReadAsync(host, blobId, 0, -1, cancellationToken));
 }
Example #19
0
 public abstract void Handle(RHost host, Message response);
Example #20
0
 public override void Handle(RHost host, Message response)
 {
     CompletionSource.TrySetResult(response.Blob);
 }