Beispiel #1
0
        public BakerProfileViewModel(
            string bakerId,
            IScreen hostScreen = null,
            ICakeModelService cakeModelService       = null,
            IAppUserModelService appUserModelService = null,
            IBakerModelService bakerModelService     = null,
            IUserApiService userApiService           = null,
            ILogger logger = null,
            IMapper mapper = null) : base(hostScreen)
        {
            _cakeModelService    = cakeModelService;
            _appUserModelService = appUserModelService;
            _bakerModelService   = bakerModelService;
            _userApiService      = userApiService;
            _logger = logger;
            _mapper = mapper;

            _bakerIdSubject = new Subject <string>();

            StartChatCommand = ReactiveCommand.CreateFromTask(GoToChat);
            PrepareCommand   = ReactiveCommand.CreateFromTask(async b => await Prepare(bakerId));

            Observable.Return(Unit.Default)
            .InvokeCommand(PrepareCommand);

            PrepareCommand.Subscribe();
        }
Beispiel #2
0
        private void WritePrepareCommand(PrepareCommand prepareCommand)
        {
            StringBuilder prepareCommandBuilder = new StringBuilder("PREPARE\n");

            prepareCommandBuilder.AppendFormat("name:{0}\n", prepareCommand.Name);
            prepareCommandBuilder.Append("\n");
            Write(prepareCommandBuilder.ToString());
        }
Beispiel #3
0
        private void Update(EvaluationContext context)
        {
            if (PrepareCommand.IsConnected)
            {
                PrepareCommand.GetValue(context);
            }

            var vertices = Vertices.GetValue(context);
            var indices  = Indices.GetValue(context);

            if (vertices == null || indices == null)
            {
                MeshBuffers.Value = null;
                return;
            }

            _result.VertexBuffer  = vertices;
            _result.IndicesBuffer = indices;
            MeshBuffers.Value     = _result;
        }
        public BakerChatViewModel(string bakerId,
                                  IAppUserModelService appUserModelService = null,
                                  IBakerModelService bakerModelService     = null,
                                  IChatModelService chatModelService       = null)
        {
            _appUserModelService = appUserModelService ?? Locator.Current.GetService <IAppUserModelService>();
            _bakerModelService   = bakerModelService;
            _chatModelService    = chatModelService;

            var user = _appUserModelService.User;

            UserAvatarUrl = user.AvatarUrl;

            var dynamicFilter = this.WhenValueChanged(vm => vm.BakerId)
                                .Select(CreatePredicate);

            var chatMessages = _chatModelService
                               .ChatsForUser
                               .Connect()
                               .SubscribeOn(RxApp.TaskpoolScheduler)
                               .Filter(dynamicFilter)
                               .Transform(TransformToListItem)
                               .Publish();

            chatMessages
            .Bind(out _chatMessages)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe()
            .DisposeWith(CompositeDisposable);

            chatMessages.Connect();

            SendMessageCommand = ReactiveCommand.CreateFromTask(SendMessage);

            PrepareCommand = ReactiveCommand.CreateFromTask(async b => await Prepare(bakerId));

            Observable.Return(Unit.Default)
            .InvokeCommand(PrepareCommand);

            PrepareCommand.Subscribe();
        }
Beispiel #5
0
        //发送指令
        private string SendCommandAndGetResult()
        {
            //获取待发送指令
            string cmd = GetSendCommand();

            //预处理指令
            string ErrorMessage = "";
            string precmd       = PrepareCommand.DuelCommand(cmd, ref ErrorMessage);

            if (precmd == "")
            {
                if (ErrorMessage != "")
                {
                    richTextBox1.AppendText("\n" + ErrorMessage);
                }
                richTextBox1.AppendText("\n>");
                richTextBox1.SelectionStart = richTextBox1.TextLength;
            }
            else
            {
                string strResult = "";
                if (PublicClass.SendCommand(precmd, 1, ref strResult))
                {
                    //格式化返回结果(主要处理AVH返回)
                    strResult = PublicClass.FormatResult(precmd, strResult);

                    richTextBox1.AppendText("\n" + strResult + "\n>");
                    richTextBox1.SelectionStart = richTextBox1.TextLength;
                    //分析返回结果
                    PrepareCommand.AnalyseCommandResult(precmd, strResult);
                }
                else
                {
                    MessageBox.Show(strResult);
                }
            }

            return(cmd);
        }
Beispiel #6
0
        private static List <T> GetData <T>(PrepareCommand PrepareCommand, Get <T> Get)
        {
            cn.Open();
            List <T>   EntryList = new List <T>();
            SqlCommand command   = new SqlCommand();

            command.Connection  = cn;
            command.CommandType = CommandType.Text;
            PrepareCommand(command);
            SqlDataReader reader = command.ExecuteReader();

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    EntryList.Add(Get(reader));
                }
            }
            //Конец вытягивания
            reader.Close();
            cn.Close();
            return(EntryList);
        }
Beispiel #7
0
        private void ParseCommand(string line)
        {
            if (string.IsNullOrEmpty(line))
            {
                return;
            }
            //NOTE: Parse in ascending length order!
            if (line.Substring(0, 1).Equals("#"))
            {
                return;
            }
            if (line.Length < 4)
            {
                Warn("invalid command: {0}", line);
                return;
            }

            if (line.Substring(0, 4).ToLower().Equals("quit") || line.Substring(0, 4).ToLower().Equals("exit"))
            {
                return;
            }

            var    idx = line.IndexOf(' ');
            string cmd;

            if (idx < 0)
            {
                idx = 0;
                cmd = line;
            }
            else
            {
                cmd = line.Substring(0, idx).ToLower();
            }

            var args = idx == 0 ? string.Empty : line.Substring(idx + 1).Trim();

            if (CR.abort.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new AbortCommand();
                c.Execute(context);
                StopTimer(CR.abort + " " + args);
                return;
            }
            if (CR.addalias.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new AddAliasCommand();
                c.Execute(context, args);
                StopTimer(CR.addalias + " " + args);
                return;
            }
            if (CR.addindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new AddIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.addindex + " " + args);
                return;
            }
            if (CR.close.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CloseCommand();
                c.Execute(context, args);
                StopTimer(CR.close + " " + args);
                return;
            }
            if (CR.commit.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CommitCommand();
                c.Execute(context, args);
                StopTimer(CR.commit + " " + args);
                return;
            }
            if (CR.compactcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CompactContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.compactcontainer + " " + args);
                return;
            }
            if (CR.contextquery.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new ContextQueryCommand();
                c.Execute(context, args);
                StopTimer(CR.contextquery + " " + args);
                return;
            }
            if (CR.cquery.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CQueryCommand();
                c.Execute(context, args);
                StopTimer(CR.cquery + " " + args);
                return;
            }
            if (CR.createcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CreateContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.createcontainer + " " + args);
                return;
            }
            if (CR.delindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new DeleteIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.delindex + " " + args);
                return;
            }
            if (CR.echo.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                Msg(args);
                return;
            }
            if (CR.getdocuments.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new GetDocumentsCommand();
                c.Execute(context, args);
                StopTimer(CR.getdocuments + " " + args);
                return;
            }
            if (CR.getmetadata.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new GetMetadataCommand();
                c.Execute(context, args);
                StopTimer(CR.getmetadata + " " + args);
                return;
            }
            if (CR.help.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                var c = new HelpCommand();
                c.Execute(args);
                return;
            }
            if (CR.info.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new InfoCommand();
                c.Execute(context, args);
                StopTimer(CR.info + " " + args);
                return;
            }
            if (CR.listindexes.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new ListIndexesCommand();
                c.Execute(context, args);
                StopTimer(CR.listindexes + " " + args);
                return;
            }
            if (CR.lookupedgeindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new LookupEdgeIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.lookupedgeindex + " " + args);
                return;
            }
            if (CR.lookupindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new LookupIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.lookupindex + " " + args);
                return;
            }
            if (CR.lookupstats.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new LookupStatisticsCommand();
                c.Execute(context, args);
                StopTimer(CR.lookupstats + " " + args);
                return;
            }
            if (CR.opencontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new OpenContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.opencontainer + " " + args);
                return;
            }
            if (CR.preload.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new PreloadCommand();
                c.Execute(context, args);
                StopTimer(CR.preload + " " + args);
                return;
            }
            if (CR.prepare.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new PrepareCommand();
                c.Execute(context, args);
                StopTimer(CR.prepare + " " + args);
                return;
            }
            if (CR.print.IndexOf(cmd, 0, StringComparison.Ordinal) == 0 || cmd.ToLower().Equals("printnames"))
            {
                StartTimer();
                var c = new PrintCommand();
                c.Execute(context, cmd.Equals("printnames") ? "printnames " + args : args);
                StopTimer(cmd.Equals("printnames") ? "printNames" : CR.print);
                return;
            }
            if (CR.putdocuments.Equals(cmd))
            {
                StartTimer();
                var c = new PutDocumentsCommand();
                c.Execute(context, args);
                StopTimer(CR.putdocuments + " " + args);
                return;
            }
            if (CR.putdocument.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new PutDocumentCommand();
                c.Execute(context, args);
                StopTimer(CR.putdocument + " " + args);
                return;
            }
            if (CR.query.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new QueryCommand();
                c.Execute(context, args);
                StopTimer(CR.query + " " + args);
                return;
            }
            if (CR.queryplan.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new QueryPlanCommand();
                c.Execute(context, args);
                StopTimer(CR.queryplan + " " + args);
                return;
            }
            if (CR.reindexcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new ReindexContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.reindexcontainer + " " + args);
                return;
            }
            if (CR.removealias.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new RemoveAliasCommand();
                c.Execute(context, args);
                StopTimer(CR.removealias + " " + args);
                return;
            }
            if (CR.removecontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new RemoveContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.removecontainer + " " + args);
                return;
            }
            if (CR.removedocument.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new RemoveDocumentCommand();
                c.Execute(context, args);
                StopTimer(CR.removedocument + " " + args);
                return;
            }
            if (CR.run.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                var c = new RunCommand();
                c.Execute(context, args);
                var l2 = new List <string>(originalArgs)
                {
                    "-s", c.Script
                };
                StartTimer();
                Main(l2.ToArray());
                StopTimer(CR.run + " " + args);
                return;
            }
            if (CR.setautoindexing.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetAutoIndexingCommand();
                c.Execute(context, args);
                StopTimer(CR.setautoindexing + " " + args);
                return;
            }
            if (CR.setbaseuri.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetBaseUriCommand();
                c.Execute(context, args);
                StopTimer(CR.setbaseuri + " " + args);
                return;
            }
            if (CR.setignore.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                var c = new SetIgnoreCommand();
                c.Execute(context, args);
                ignoreErrors = c.Ignore;
                return;
            }
            if (CR.setlazy.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetLazyCommand();
                c.Execute(context, args);
                StopTimer(CR.setlazy + " " + args);
                return;
            }
            if (CR.setmetadata.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetMetadataCommand();
                c.Execute(context, args);
                StopTimer(CR.setmetadata + " " + args);
                return;
            }
            if (CR.setnamespace.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetNamespaceCommand();
                c.Execute(context, args);
                StopTimer(CR.setnamespace + " " + args);
                return;
            }
            if (CR.setprojection.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetProjectionCommand();
                c.Execute(context, args);
                StopTimer(CR.setprojection + " " + args);
                return;
            }
            if (CR.setquerytimeout.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetQueryTimeoutCommand();
                c.Execute(context, args);
                StopTimer(CR.setquerytimeout + " " + args);
                return;
            }
            if (CR.setvariable.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetVariableCommand();
                c.Execute(context, args);
                StopTimer(CR.setvariable + " " + args);
                return;
            }
            if (CR.setverbose.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetVerboseCommand();
                c.Execute(context, args);
                StopTimer(CR.setverbose + " " + args);
                return;
            }
            if (CR.sync.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                context.Sync();
                StopTimer(CR.sync + " " + args);
                return;
            }
            if (CR.time.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                time = true;
                ParseCommand(args);
                return;
            }
            if (CR.transaction.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new TransactionCommand();
                c.Execute(context, args);
                StopTimer(CR.transaction + " " + args);
                return;
            }
            if (CR.upgradecontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new UpgradeContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.upgradecontainer + " " + args);
                return;
            }

            Warn("Command not recognized: {0}", cmd);
        }
 public PrepareHandler(ILogger <PrepareHandler> logger, PrepareCommand command)
 {
     _logger  = logger;
     _command = command;
 }
Beispiel #9
0
        public void Start()
        {
            Task.Factory.StartNew(() =>
            {
                try
                {
                    _control.Connect();

                    // Send PREPARE command
                    PrepareCommand prepareCommand = new PrepareCommand {
                        Name = _name
                    };

                    _control.WriteCommand(prepareCommand);

                    bool abortWritten = false;

                    while (true)
                    {
                        try
                        {
                            CommandEvent commandEvent = _control.ReadEvent(200);

                            switch (commandEvent.EventKind)
                            {
                            case CommandEvent.Kind.PREPARED:
                                _latch.NotifyPrepared();

                                StartCommand startCommand = new StartCommand {
                                    Name = _name
                                };
                                _control.WriteCommand(startCommand);
                                break;

                            case CommandEvent.Kind.STARTED:
                                _latch.NotifyStartable();
                                break;

                            case CommandEvent.Kind.ERROR:
                                ErrorEvent errorEvent = (ErrorEvent)commandEvent;
                                throw new Exception(String.Format("{0}:{1}", errorEvent.Summary, errorEvent.Description));

                            case CommandEvent.Kind.FINISHED:
                                FinishedEvent finishedEvent = commandEvent as FinishedEvent;
                                _expectedScript             = finishedEvent.ExpectedScript;
                                _observedScript             = finishedEvent.ObservedScript;
                                _latch.NotifyFinished();
                                return;

                            default:
                                throw new InvalidOperationException("Unsupported event: " + commandEvent.EventKind);
                            }
                        }
                        catch (Exception ex)
                        {
                            if (_abortScheduled && !abortWritten)
                            {
                                abortWritten = true;
                                SendAbortCommand();
                            }
                        }
                    }
                }
                catch (SocketException socketException)
                {
                    Exception exception = new Exception("Failed to connect. Is the Robot running?", socketException);
                    _latch.NotifyException(exception);
                }
                catch (Exception exception)
                {
                    _latch.NotifyException(exception);
                }
                finally
                {
                    _control.Disconnect();
                }
            });

            // Wait until robot server is ready to accept connections
            _latch.AwaitStartable();
        }