Beispiel #1
0
    public new void pushDelayCommand <T>(CommandReceiver cmdReceiver, float delayExecute = 0.001f, bool show = true) where T : Command, new()
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mSystemDestroy)
        {
            return;
        }
        T cmd = newCmd <T>(show, true);

        pushDelayCommand(cmd, cmdReceiver, delayExecute);
    }
Beispiel #2
0
        static void Main(string[] args)
        {
            CommandReceiver server = new CommandReceiver();

            server.Open();
            Console.WriteLine($"Started: port {server.Port}");

            Console.ReadKey();
            server.Close();
            Console.WriteLine("Closed.");
        }
Beispiel #3
0
 /// <summary>
 ///     When we get a message from the server, we handle the message here
 ///     and perform any necessary tasks.
 /// </summary>
 private void ListenerOnNetworkReceiveEvent(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod)
 {
     try
     {
         CommandReceiver.Parse(reader, peer);
     }
     catch (Exception ex)
     {
         _logger.Error(ex, $"Encountered an error while reading command from {peer.EndPoint.Address}:{peer.EndPoint.Port}:");
     }
 }
Beispiel #4
0
 public BOOL mResult;                                                                // 命令的执行结果,只用于部分需要知道执行结果的命令使用
 public Command()
 {
     mReceiver      = null;
     mEndCallback   = new List <CommandCallback>();
     mStartCallback = new List <CommandCallback>();
     mEndUserData   = new List <object>();
     mStartUserData = new List <object>();
     mValid         = false;
     mAssignID      = -1;
     mResult        = null;
 }
Beispiel #5
0
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            Properties.Constants.CONFIGURATION = configuration;

            InitHttpClient();
            noticeCrawler   = new NoticeCrawler();
            commandReceiver = new CommandReceiver();

            noticeCrawler.OnNoticeUpdated += NoticeCrawler_OnNoticeUpdated;
        }
Beispiel #6
0
    public new void pushCommand <T>(CommandReceiver cmdReceiver, bool show = true) where T : Command, new()
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mDestroy)
        {
            return;
        }
        T cmd = newCmd <T>(show, false);

        pushCommand(cmd, cmdReceiver);
    }
Beispiel #7
0
 public virtual void init()
 {
     mReceiver      = null;
     mShowDebugInfo = true;
     mDelayCommand  = false;
     mValid         = false;
     mExecuteState  = EXECUTE_STATE.ES_NOT_EXECUTE;
     mEndCallback.Clear();
     mStartCallback.Clear();
     mEndUserData.Clear();
     mStartUserData.Clear();
 }
Beispiel #8
0
    //protected bool					m_UseParentInvoker;
    //protected bool					m_UseParentValidator;

    //////////////////////////////////////////////////////////////////////////
    public void iStart(ICommandValidator validator)
    {
        m_Validator       = validator;
        m_CommandReceiver = validator as CommandReceiver;

        /*if (m_CommandReciver != null)
         * {	// write this if needed
         *      if (m_UseParentInvoker)
         *      if (m_UseParentValidator)
         * }*/
        Start();
    }
Beispiel #9
0
    public Command pushDelayCommand(Type type, CommandReceiver cmdReceiver, float delayExecute, bool show, IDelayCmdWatcher watcher)
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mDestroy)
        {
            return(null);
        }
        Command cmd = newCmd(type, show, true);

        pushDelayCommand(cmd, cmdReceiver, delayExecute, watcher);
        return(cmd);
    }
Beispiel #10
0
        public override string ToString()
        {
            var result = $"Command: {CommandReceiver.ToString()}{ReceiverID} {IssuedCommand}";

            if (Args?.Count > 0)
            {
                foreach (var arg in Args)
                {
                    result = result += $" {arg}";
                }
            }
            return(result);
        }
Beispiel #11
0
        public void OldestPersonTest_GivenPerson_CorrectResult(string firstName, string secondName, string sex, int age)
        {
            Person expectedPerson = new Person
            {
                FirstName = firstName,
                LastName  = secondName,
                Sex       = sex,
                Age       = age
            };
            CommandReceiver receiver = new CommandReceiver(list);

            Assert.Equal(expectedPerson, receiver.OldestPerson());
        }
Beispiel #12
0
 private void OpenLocalCommandReceiver()
 {
     try
     {
         this.cmdReceiver = new CommandReceiver(Ports.Main);
         SynchronizationContext sc = SynchronizationContext.Current;
         this.cmdReceiver.Start(this.OnReceivedCommandLine);
     }
     catch (Exception e)
     {
         MessageBox.Show("Command receiver initialized failed.");
     }
 }
Beispiel #13
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                List <Receiver> receivers = new List <Receiver>();

                foreach (var receiverEmail in request.ReceiverEmails)
                {
                    Receiver receiver = await _context.Receivers.FirstOrDefaultAsync(
                        r => r.ReceivingUser.Email == receiverEmail);

                    if (receiver == null)
                    {
                        throw new RestException(HttpStatusCode.BadRequest,
                                                new { Receiver = $"{receiverEmail} is not registerd" });
                    }

                    receivers.Add(receiver);
                }

                var user = await _context.Users.SingleOrDefaultAsync(
                    x => x.Email == _userAccessor.GetCurrentUserEmail());

                PushCommand pushCommand = new PushCommand
                {
                    Name             = request.Name,
                    Message          = request.Message,
                    CommandReceivers = new List <CommandReceiver>(),
                };

                foreach (var receiver in receivers)
                {
                    CommandReceiver commandReceiver = new CommandReceiver
                    {
                        PushCommand = pushCommand,
                        Receiver    = receiver,
                    };

                    pushCommand.CommandReceivers.Add(commandReceiver);
                }

                user.PushCommands.Add(pushCommand);

                bool success = (await _context.SaveChangesAsync() > 0);

                if (success == true)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem Saving Changes");
            }
Beispiel #14
0
 public virtual void init()
 {
     mReceiver        = null;
     mUserData        = null;
     mResult          = null;
     mShowDebugInfo   = true;
     mDelayCommand    = false;
     mValid           = false;
     mIgnoreTimeScale = false;
     mExecuteState    = EXECUTE_STATE.ES_NOT_EXECUTE;
     mEndCallback.Clear();
     mStartCallback.Clear();
     mDelayTime = 0.0f;
 }
Beispiel #15
0
        protected bool SendCommandAck(byte[] packet, int sequenceId)
        {
            int tryNum = 0;

            CommandReceiver.SetCommandReceived("SEND_WITH_ACK", sequenceId, false);

            while (tryNum < MaxPacketRetries && !CommandReceiver.IsCommandReceived("SEND_WITH_ACK", sequenceId))
            {
                SafeSend(packet);
                tryNum++;
                SmartSleep(250);
            }

            return(CommandReceiver.IsCommandReceived("SEND_WITH_ACK", sequenceId));
        }
Beispiel #16
0
        public void TheMostPopularFemaleNameTest()
        {
            List <User> listOfUsers = new List <User>();

            listOfUsers.Add(new User("Any", "Novik", User.SexOfAPerson.female, 18));
            listOfUsers.Add(new User("Natasha", "Lesh", User.SexOfAPerson.female, 64));
            listOfUsers.Add(new User("Ivan", "Morz", User.SexOfAPerson.male, 25));
            listOfUsers.Add(new User("Vlad", "Sed", User.SexOfAPerson.male, 40));
            listOfUsers.Add(new User("Natasha", "Lok", User.SexOfAPerson.female, 24));
            listOfUsers.Add(new User("Natasha", "Les", User.SexOfAPerson.female, 52));
            CommandReceiver receiver    = new CommandReceiver(listOfUsers);
            string          actualValue = receiver.SearchTheMostPopularFemaleName();

            Assert.AreEqual("Natasha", actualValue);
        }
Beispiel #17
0
        public void TheOldestUserTest()
        {
            List <User> listOfUsers = new List <User>();

            listOfUsers.Add(new User("Any", "Novik", User.SexOfAPerson.female, 18));
            listOfUsers.Add(new User("Natasha", "Lesh", User.SexOfAPerson.female, 64));
            listOfUsers.Add(new User("Ivan", "Morz", User.SexOfAPerson.male, 25));
            listOfUsers.Add(new User("Vlad", "Sed", User.SexOfAPerson.male, 40));
            listOfUsers.Add(new User("Natasha", "Lok", User.SexOfAPerson.female, 24));
            listOfUsers.Add(new User("Natasha", "Les", User.SexOfAPerson.female, 52));
            CommandReceiver receiver    = new CommandReceiver(listOfUsers);
            int             actualValue = receiver.SearchOldestUser();

            Assert.AreEqual(64, actualValue);
        }
Beispiel #18
0
 public override void resetProperty()
 {
     base.resetProperty();
     mReceiver        = null;
     mResult          = null;
     mShowDebugInfo   = true;
     mDelayCommand    = false;
     mIgnoreTimeScale = false;
     mCmdState        = EXECUTE_STATE.NOT_EXECUTE;
     mEndCallback.Clear();
     mStartCallback.Clear();
     mDelayTime = 0.0f;
     // CmdID不重置
     // mCmdID = 0;
 }
        static IThemeAgent SetupAgent()
        {
#if NETSTANDARD1_0 || NETSTANDARD2_0
            return(null);
#else
#pragma warning disable IDE0022 // Use expression body for method
            var agent    = new ThemeAgent();
            var receiver = new CommandReceiver
            {
                OnCommand = agent.ExecuteCommand
            };

            return(agent);

#pragma warning restore IDE0022 // Use expression body for methods
#endif
        }
Beispiel #20
0
    // delayExecute是命令延时执行的时间,默认为0,只有new出来的命令才能延时执行
    // 子线程中发出的命令必须是延时执行的命令!
    public new void pushDelayCommand(Command cmd, CommandReceiver cmdReceiver, float delayExecute, IDelayCmdWatcher watcher)
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mDestroy)
        {
            return;
        }
        if (cmd == null)
        {
            logError("cmd is null! receiver : " + (cmdReceiver != null ? cmdReceiver.getName() : EMPTY));
            return;
        }
        if (cmdReceiver == null)
        {
            logError("receiver is null! cmd : " + (cmd != null ? cmd.GetType().ToString() : EMPTY));
            return;
        }
        if (cmd.isDestroy())
        {
            logError("cmd is invalid! make sure create cmd use CommandSystem.newCmd! pushDelayCommand cmd type : "
                     + Typeof(cmd) + "cmd id : " + cmd.getAssignID());
            return;
        }
        if (!cmd.isDelayCommand())
        {
            logError("cmd is not a delay command, Command : " + cmd.getAssignID() + ", " + cmd.showDebugInfo());
            return;
        }
        clampMin(ref delayExecute);
        if (cmd.isShowDebugInfo())
        {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            log("CMD : delay cmd : " + cmd.getAssignID() + ", " + delayExecute + ", info : " + cmd.showDebugInfo() + ", receiver : " + cmdReceiver.getName(), LOG_LEVEL.NORMAL);
#endif
        }
        cmd.setDelayTime(delayExecute);
        cmd.setReceiver(cmdReceiver);
        mBufferLock.waitForUnlock();
        mCommandBufferInput.Add(cmd);
        mBufferLock.unlock();
        watcher?.addDelayCmd(cmd);
    }
Beispiel #21
0
    // delayExecute是命令延时执行的时间,默认为0,只有new出来的命令才能延时执行
    // 子线程中发出的命令必须是延时执行的命令!
    public new void pushDelayCommand(Command cmd, CommandReceiver cmdReceiver, float delayExecute = 0.001f)
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mSystemDestroy)
        {
            return;
        }
        if (cmd == null)
        {
            logError("cmd is null! receiver : " + (cmdReceiver != null ? cmdReceiver.getName() : ""));
            return;
        }
        if (cmdReceiver == null)
        {
            logError("receiver is null! cmd : " + (cmd != null ? cmd.getType().ToString() : ""));
            return;
        }
        if (!cmd.isValid())
        {
            logError("cmd is invalid! make sure create cmd use CommandSystem.newCmd! pushDelayCommand cmd type : "
                     + cmd.GetType().ToString() + "cmd id : " + cmd.mAssignID);
            return;
        }
        if (!cmd.isDelayCommand())
        {
            logError("cmd is not a delay command, Command : " + cmd.mAssignID + ", " + cmd.showDebugInfo());
            return;
        }
        if (delayExecute < 0.0f)
        {
            delayExecute = 0.0f;
        }
        if (cmd.getShowDebugInfo())
        {
            logInfo("CommandSystem : delay cmd : " + cmd.mAssignID + ", " + delayExecute + ", info : " + cmd.showDebugInfo() + ", receiver : " + cmdReceiver.getName(), LOG_LEVEL.LL_NORMAL);
        }
        DelayCommand delayCommand = new DelayCommand(delayExecute, cmd, cmdReceiver);

        mBufferLock.waitForUnlock();
        mCommandBufferInput.Add(delayCommand);
        mBufferLock.unlock();
    }
Beispiel #22
0
    // 执行命令
    public new void pushCommand(Command cmd, CommandReceiver cmdReceiver)
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mDestroy)
        {
            return;
        }
        if (cmd == null)
        {
            logError("cmd is null! receiver : " + (cmdReceiver != null ? cmdReceiver.getName() : EMPTY));
            return;
        }
        if (cmdReceiver == null)
        {
            logError("receiver is null! cmd : " + (cmd != null ? cmd.GetType().ToString() : EMPTY));
            return;
        }
        if (cmd.isDestroy())
        {
            logError("cmd is invalid! make sure create cmd use CommandSystem.newCmd! pushCommand cmd type : "
                     + Typeof(cmd) + "cmd id : " + cmd.getAssignID());
            return;
        }
        if (cmd.isDelayCommand())
        {
            logError("cmd is a delay cmd! can not use pushCommand!" + cmd.getAssignID() + ", " + cmd.showDebugInfo());
            return;
        }
        cmd.setReceiver(cmdReceiver);
        if (cmd.isShowDebugInfo())
        {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            log("CMD : " + cmd.getAssignID() + ", " + cmd.showDebugInfo() + ", receiver : " + cmdReceiver.getName(), LOG_LEVEL.NORMAL);
#endif
        }
        cmdReceiver.receiveCommand(cmd);
        // 销毁回收命令
        mClassPoolThread?.destroyClass(cmd);
    }
Beispiel #23
0
        private void AgentWindowLoad(object sender, EventArgs e)
        {
            this.Visible = false;
            LoggerClient.Initialize();
            this.logger.Send("ScadaDataClient", "Data (upload) Program starts at " + DateTime.Now);

            this.InitSysNotifyIcon();
            this.MakeWindowShownFront();
            this.ShowInTaskbar = false;
            this.SetExceptionToolStripMenuItem.Checked = false;

            this.cmdReceiver = new CommandReceiver(Ports.DataClient);
            cmdReceiver.Start(this.OnLocalCommand);

            SystemEvents.SessionEnding += SystemEvents_SessionEnding;

            this.InitDetailsListView();
            if (this.StartState)
            {
                this.Start();
            }
        }
Beispiel #24
0
    public virtual void notifyReceiverDestroied(CommandReceiver receiver)
    {
        if (mSystemDestroy)
        {
            return;
        }
        // 异步列表中
        mBufferLock.waitForUnlock();
        for (int i = 0; i < mCommandBufferInput.Count; ++i)
        {
            if (mCommandBufferInput[i].mReceiver == receiver)
            {
                mCommandBufferInput.Remove(mCommandBufferInput[i]);
                --i;
            }
        }
        mBufferLock.unlock();
        // 同步列表中
        for (int i = 0; i < mCommandBufferProcess.Count; ++i)
        {
            if (mCommandBufferProcess[i].mReceiver == receiver)
            {
                mCommandBufferProcess.Remove(mCommandBufferProcess[i]);
                --i;
            }
        }
        // 执行列表中
        int count = mExecuteList.Count;

        for (int i = 0; i < count; ++i)
        {
            // 已执行或正在执行的命令不作判断,该列表无法删除元素,只能将接收者设置为null
            if (mExecuteList[i].mReceiver == receiver && mExecuteList[i].mCommand.mExecuteState == EXECUTE_STATE.ES_NOT_EXECUTE)
            {
                mExecuteList[i].mReceiver = null;
            }
        }
    }
Beispiel #25
0
    // 执行命令
    public new void pushCommand(Command cmd, CommandReceiver cmdReceiver)
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mSystemDestroy)
        {
            return;
        }
        if (cmd == null)
        {
            logError("cmd is null! receiver : " + (cmdReceiver != null ? cmdReceiver.getName() : ""));
            return;
        }
        if (cmdReceiver == null)
        {
            logError("receiver is null! cmd : " + (cmd != null ? cmd.getType().ToString() : ""));
            return;
        }
        if (!cmd.isValid())
        {
            logError("cmd is invalid! make sure create cmd use CommandSystem.newCmd! pushCommand cmd type : "
                     + cmd.GetType().ToString() + "cmd id : " + cmd.mAssignID);
            return;
        }
        if (cmd.isDelayCommand())
        {
            logError("cmd is a delay cmd! can not use pushCommand!" + cmd.mAssignID + ", " + cmd.showDebugInfo());
            return;
        }
        cmd.setReceiver(cmdReceiver);
        if (cmd.getShowDebugInfo())
        {
            logInfo("CommandSystem : " + cmd.mAssignID + ", " + cmd.showDebugInfo() + ", receiver : " + cmdReceiver.getName(), LOG_LEVEL.LL_NORMAL);
        }
        cmdReceiver.receiveCommand(cmd);

        // 销毁回收命令
        mCommandPool.destroyCmd(cmd);
    }
Beispiel #26
0
        private void AgentWindow_Load(object sender, EventArgs e)
        {
            this.CancelQuit = true;
            InitSysNotifyIcon();
            // StatusBar labels
            this.statusStrip.Items.Add(this.statusLabel);
            this.statusStrip.Items.Add(new ToolStripSeparator());
            this.statusStrip.Items.Add(this.addressLabel);
            this.statusStrip.Items.Add(new ToolStripSeparator());
            this.statusStrip.Items.Add(this.counterLabel);
            this.statusStrip.Items.Add(new ToolStripSeparator());
            this.statusStrip.Items.Add(this.uploadLabel);
            this.statusStrip.Items.Add(new ToolStripSeparator());
            this.statusStrip.Items.Add(this.pingLabel);

            this.CheckLastSendTime = true;

            this.cmdReceiver = new CommandReceiver(Ports.DataClient);
            cmdReceiver.Start(this.OnLocalCommand);

            this.InitDetailsListView();
            this.Start();
        }
Beispiel #27
0
        public static void Init(TestContext tc)
        {
            CommandFile.SharedFolder = "A:\\Cmmd";
            _localDbFilePath         = Path.Combine(Properties.Resources.Local, $"{nameof(Edit_SqliteDb_CmmdToSharedFolderToLocalDbVSToSharedFolderTest)}{SqliteDBContext.DBFileExtensionName}");
            _sharedFolderDbFilePath  = Path.Combine(Properties.Resources.Shared, $"{nameof(Edit_SqliteDb_CmmdToSharedFolderToLocalDbVSToSharedFolderTest)}{SqliteDBContext.DBFileExtensionName}");

            NetCoreSqliteDB.SqliteDBContext.CopyTempateDBFile(_localDbFilePath);


            _localRepository        = new SqliteDBRepository(_localDbFilePath);
            _sharedFolderRepository = new SqliteDBRepository(_sharedFolderDbFilePath);

            _entitiy1000 = new Entity1[1000];
            for (int i = 0; i < 1000; i++)
            {
                _entitiy1000[i] = AddDataRowsHelper.CreateDataRow <Entity1>(0, i);
            }

            var localDbContext = new NetCoreSqliteDB.SqliteDBContext(_localDbFilePath);

            localDbContext.Table1.AddRange(_entitiy1000);
            localDbContext.SaveChanges();

            File.Copy(_localDbFilePath, _sharedFolderDbFilePath, true);

            foreach (var e in _entitiy1000)
            {
                e.P3 = "Edited";
                e.BasedOnUpdatedDateTime = e.UpdatedDateTime;
                e.UpdatedDateTime        = DateTime.Now;
            }

            _cmmdReceiver = new CommandReceiver(new JsonSer(), _localRepository);
            _cmmdReceiver.Start();

            _cmmdSender = new CommandSender(new JsonSer());
        }
Beispiel #28
0
    public virtual void notifyReceiverDestroied(CommandReceiver receiver)
    {
        mBufferLock.waitForUnlock(LOCK_TYPE.LT_READ);
        for (int i = 0; i < mCommandBufferInput.Count; ++i)
        {
            if (mCommandBufferInput[i].mReceiver == receiver)
            {
                // 命令的延迟执行时间到了,则执行命令
                mCommandBufferInput.Remove(mCommandBufferInput[i]);
                --i;
            }
        }
        mBufferLock.unlock(LOCK_TYPE.LT_READ);

        for (int i = 0; i < mCommandBufferProcess.Count; ++i)
        {
            if (mCommandBufferProcess[i].mReceiver == receiver)
            {
                // 命令的延迟执行时间到了,则执行命令
                mCommandBufferProcess.Remove(mCommandBufferProcess[i]);
                --i;
            }
        }
    }
Beispiel #29
0
 public static T pushDelayCommand <T>(CommandReceiver cmdReceiver, float delayExecute = 0.001f, bool show = true) where T : Command, new()
 {
     return(mCommandSystem.pushDelayCommand <T>(cmdReceiver, delayExecute));
 }
Beispiel #30
0
 public static void pushCommand(Command cmd, CommandReceiver cmdReceiver)
 {
     mCommandSystem.pushCommand(cmd, cmdReceiver);
 }