예제 #1
0
        public override void Perform(UFEPacket resp)
        {
            ReceivedHandler handler = null;

            try
            {
                if (resp != null && !resp.HasError)
                {
                    //log.Info("Perform success handler");
                    handler = SuccessHandler;
                    HandleResponseSuccess(resp);
                }
                else
                {
                    handler = FailHandler;
                    //log.Info("Perform fail handler: resp null or resp.HasError");
                    HandleResponseFail(resp);
                }

                OnHandler(resp, handler);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
        }
예제 #2
0
        protected virtual void OnHandler(UFEPacket resp, ReceivedHandler handler)
        {
            //if (resp.Id > 0)
            //{
            //    UFEFuture.OnCompleted(resp);
            //    return;
            //}

            if (handler != null)
            {
                ISynchronizeInvoke hwnd = handler.Target as ISynchronizeInvoke;
                if (hwnd != null)
                {
                    if (hwnd.InvokeRequired)
                    {
                        hwnd.Invoke(handler, new object[] { resp });
                    }
                    else
                    {
                        handler.DynamicInvoke(resp);
                    }
                }
                else
                {
                    var old = CheckForIllegalCrossThreadCalls;
                    CheckForIllegalCrossThreadCalls = false;
                    handler.DynamicInvoke(resp);
                    CheckForIllegalCrossThreadCalls = old;
                }
            }
        }
예제 #3
0
        public DataChannel(
            short channelID,
            QosType qos,
            Compression compression,
            Encryption encryption,
            ReceivedHandler onReceived,
            CheckMode checkMode = CheckMode.Sequre
            )
        {
            ChannelID   = channelID;
            Qos         = qos;
            Compression = compression;
            Encryption  = encryption;

            OnReceived += onReceived;

            CheckMode = checkMode;

            converter = DataSerializer.GetConverter(typeof(T));

            if (Compression == Compression.LZ4)
            {
                byteArrayConverter = DataSerializer.GetConverter(typeof(byte[]));
            }

            if (Encryption == Encryption.Rsa || Encryption == Encryption.Aes)
            {
                encArrayConverter = DataSerializer.GetConverter(typeof(byte[]));
            }
        }
예제 #4
0
 public void Initialize(ReceivedHandler receivedEventHandler, SendingHandler sendingEventHandler)
 {
     sendArgs.UserToken     = this;
     receiveArgs.UserToken  = this;
     sendArgs.Completed    += new EventHandler <SocketAsyncEventArgs>(SendCallback);
     receiveArgs.Completed += new EventHandler <SocketAsyncEventArgs>(ReceiveCallback);
     handleReceived         = receivedEventHandler;
     handleSending          = sendingEventHandler;
 }
예제 #5
0
        public DataChannel(short channelID, QosType qos, Compression compression, ReceivedHandler onReceived)
        {
            ChannelID   = channelID;
            Qos         = qos;
            Compression = Compression;
            OnReceived += onReceived;

            converter    = DataSerializer.GetConverter(typeof(T));
            lz4converter = DataSerializer.GetConverter(typeof(byte[]));
        }
예제 #6
0
        public void ListenMessage(object o, ReceivedEventArgs e)
        {
            if (this.PacketView.InvokeRequired)
            {
                ReceivedHandler method = new ReceivedHandler(this.ListenMessage);
                base.Invoke(method, new object[]
                {
                    o,
                    e
                });
                return;
            }
            byte[] data     = e.Data;
            int    num      = data.Length;
            bool   @checked = this.cbAutoSend.Checked;
            string text     = string.Concat(o);

            if (@checked)
            {
                this.commServer.Send(text, data, data.Length);
            }
            if (this.PacketView.Items.Count > 200)
            {
                this.PacketView.Items.Clear();
            }
            ListViewItem listViewItem = this.PacketView.Items.Insert(0, string.Concat(this.PacketView.Items.Count));

            listViewItem.SubItems.Add(text ?? "");
            listViewItem.SubItems.Add(e.RemoteHost.ToString() ?? "");
            string text2 = ParseUtil.ParseString(data, num);

            if (this.rbUTF8.Checked)
            {
                text2 = ParseUtil.ParseStringByUTF8(data, num);
            }
            else if (this.rbHex.Checked)
            {
                text2 = ParseUtil.ToHexString(data, num);
            }
            string text3 = DateTime.Now.ToString("HH:mm:ss");

            listViewItem.SubItems.Add(text3);
            listViewItem.SubItems.Add(text2);
            listViewItem.SubItems.Add(string.Concat(num));
            if (this.cbLog.Checked)
            {
                ServerForm.logger.Info(e.RemoteHost.ToString() + " " + text2);
            }
        }
예제 #7
0
        public RawDataChannel(
            short channelID, QosType qos, Compression compression, ReceivedHandler onReceived, CheckMode checkMode = CheckMode.Sequre
            )
        {
            ChannelID   = channelID;
            Qos         = qos;
            Compression = compression;

            OnReceived += onReceived;

            CheckMode = checkMode;

            converter    = DataSerializer.GetConverter(typeof(T));
            lz4converter = DataSerializer.GetConverter(typeof(byte[]));
        }
예제 #8
0
        public void ListenMessage(object o, ReceivedEventArgs e)
        {
            if (this.PacketView.InvokeRequired)
            {
                try
                {
                    ReceivedHandler method = new ReceivedHandler(this.ListenMessage);
                    base.Invoke(method, new object[]
                    {
                        o,
                        e
                    });
                    return;
                }
                catch (Exception ex)
                {
                    logger.Error(ex.Message);
                    logger.Error(ex.StackTrace);
                    return;
                }
            }
            if (this.PacketView.Items.Count > 200)
            {
                this.PacketView.Items.Clear();
            }
            ListViewItem listViewItem = this.PacketView.Items.Insert(0, string.Concat(this.PacketView.Items.Count));
            int          num          = e.Data.Length;
            string       text         = DateTime.Now.ToString("HH:mm:ss");

            listViewItem.SubItems.Add(text);
            string text2 = ParseUtil.ParseString(e.Data, num);

            if (this.rbHex.Checked)
            {
                text2 = ParseUtil.ToHexString(e.Data, num);
            }
            if (this.rbUTF8.Checked)
            {
                text2 = System.Text.Encoding.UTF8.GetString(e.Data);//ParseUtil.ToHexString(e.Data, num);
            }
            listViewItem.SubItems.Add(text2);
            listViewItem.SubItems.Add(string.Concat(num));
            if (this.cbLog.Checked)
            {
                logger.Info(e.RemoteHost.ToString() + " " + text2);
            }
        }
예제 #9
0
        public void ListenMessage(object o, ReceivedEventArgs e)
        {
            if (PacketView.InvokeRequired)
            {
                ReceivedHandler d = new ReceivedHandler(ListenMessage);
                this.Invoke(d, new object[] { o, e });
            }
            else
            {
                byte[]  data   = e.Data;
                int     length = data.Length;
                Boolean isEcho = this.cbAutoSend.Checked;
                string  connId = "" + o;
                if (isEcho)
                {
                    commServer.Send(connId, data, data.Length);
                }


                if (PacketView.Items.Count > 200)
                {
                    PacketView.Items.Clear();
                }

                ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);
                item.SubItems.Add("" + connId);
                item.SubItems.Add("" + e.RemoteHost.ToString());

                string msg = ParseUtil.ParseString(data, length);
                if (rbHex.Checked)
                {
                    msg = ParseUtil.ToHexString(data, length);
                }

                string strDate = DateTime.Now.ToString("HH:mm:ss");
                item.SubItems.Add(strDate);

                item.SubItems.Add(msg);
                item.SubItems.Add("" + length);
                if (cbLog.Checked)
                {
                    logger.Info(e.RemoteHost.ToString() + " " + msg);
                }
                //item.SubItems.Add("" + msg.MsgContentDesc);
            }
        }
예제 #10
0
        public void ListenMessage(object o, ReceivedEventArgs e)
        {
            if (PacketView.InvokeRequired)
            {
                try
                {
                    ReceivedHandler d = new ReceivedHandler(ListenMessage);
                    this.Invoke(d, new object[] { o, e });
                }
                catch (System.Exception ex)
                {
                    logger.Error(ex.Message);
                    logger.Error(ex.StackTrace);
                }
            }
            else
            {
                if (PacketView.Items.Count > 200)
                {
                    PacketView.Items.Clear();
                }

                ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);

                int    length  = e.Data.Length;
                string strDate = DateTime.Now.ToString("HH:mm:ss");
                item.SubItems.Add(strDate);
                string msg = ParseUtil.ParseString(e.Data, length);
                if (rbHex.Checked)
                {
                    msg = ParseUtil.ToHexString(e.Data, length);
                }
                item.SubItems.Add(msg);
                item.SubItems.Add("" + length);

                if (cbLog.Checked)
                {
                    logger.Info(e.RemoteHost.ToString() + " " + msg);
                }
                //item.SubItems.Add("" + msg.MsgContentDesc);
            }
        }
예제 #11
0
        public override RunningProcess ExecuteCommand(NodeCommand cmd)
        {
            var cmdLine = $"{cmd.FileName} {string.Join(" ", cmd.Arguments)}";

            cmd.Output.LogDebug("SSH: " + cmdLine);
            using var command = SshClient.CreateCommand(cmdLine);

            // hacky: https://stackoverflow.com/questions/37059305/c-sharp-streamreader-readline-returning-null-before-end-of-stream
            var result            = command.BeginExecute();
            var channelField      = command.GetType().GetField("_channel", BindingFlags.Instance | BindingFlags.NonPublic);
            var channel           = channelField.GetValue(command);
            var receivedEvent     = channel.GetType().GetEvent("DataReceived", BindingFlags.Instance | BindingFlags.Public);
            var extendedDataEvent = channel.GetType().GetEvent("ExtendedDataReceived", BindingFlags.Instance | BindingFlags.Public);

            using var handler  = new ReceivedHandler(cmd.Output);
            using var handler2 = new ExtendedReceivedHandler(cmd.Output);

            // add event handler here
            receivedEvent.AddEventHandler(channel, Delegate.CreateDelegate(receivedEvent.EventHandlerType, handler, handler.GetType().GetMethod("OnReceive")));
            extendedDataEvent.AddEventHandler(channel, Delegate.CreateDelegate(extendedDataEvent.EventHandlerType, handler2, handler2.GetType().GetMethod("OnReceive")));

            result.AsyncWaitHandle.WaitOne();

            var procResult = new ProcessResult
            {
                ExitCode  = command.ExitStatus,
                Completed = true,
            };

            return(new RunningProcess
            {
                StartedTask = Task.FromResult(true),
                CompletedTask = Task.FromResult(procResult),
                StartedOutput = Task.CompletedTask,
            });
        }
예제 #12
0
        public void ListenMessage(object o, ReceivedEventArgs e)
        {
            if (PacketView.InvokeRequired)
            {
                
                    ReceivedHandler d = new ReceivedHandler(ListenMessage);
                    this.Invoke(d, new object[] { o, e});
            }
            else
            {
                byte[] data = e.Data;
                int length = data.Length;
                Boolean isEcho = this.cbAutoSend.Checked;
                string connId = "" + o;
                if (isEcho)
                {
                    commServer.Send(connId, data, data.Length);
                }

                
                if (PacketView.Items.Count > 200)
                    PacketView.Items.Clear();

                ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);
                item.SubItems.Add("" + connId);
                item.SubItems.Add("" + e.RemoteHost.ToString());

                string msg = ParseUtil.ParseString(data, length);
                if (rbHex.Checked)
                {
                    msg = ParseUtil.ToHexString(data, length);
                }

                string strDate = DateTime.Now.ToString("HH:mm:ss");
                item.SubItems.Add(strDate);

                item.SubItems.Add(msg);
                item.SubItems.Add("" + length);
                if (cbLog.Checked)
                {
                    logger.Info(e.RemoteHost.ToString() + " " + msg);
                }
                //item.SubItems.Add("" + msg.MsgContentDesc);
            }
        }
예제 #13
0
        public void ListenMessage(object o, ReceivedEventArgs e)
        {
            if (PacketView.InvokeRequired)
            {
                try
                {
                    ReceivedHandler d = new ReceivedHandler(ListenMessage);
                    this.Invoke(d, new object[] {o, e });
                }
                catch (System.Exception ex)
                {
                    logger.Error(ex.Message);
                    logger.Error(ex.StackTrace);
                }
            }
            else
            {
                if (PacketView.Items.Count > 200)
                    PacketView.Items.Clear();

                ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);

                int length = e.Data.Length;
                string strDate = DateTime.Now.ToString("HH:mm:ss");
                item.SubItems.Add(strDate);
                string msg = ParseUtil.ParseString(e.Data, length);
                if (rbHex.Checked)
                    msg = ParseUtil.ToHexString(e.Data, length);
                item.SubItems.Add(msg);
                item.SubItems.Add("" + length);

                if (cbLog.Checked)
                {
                    logger.Info(e.RemoteHost.ToString() + " " + msg);
                }
                //item.SubItems.Add("" + msg.MsgContentDesc);
            }
        }
예제 #14
0
 public void bind(Form1 f, Form2 f2)
 {
     receivedEvent += new ReceivedHandler(f.Afficher);
     this.f         = f;
     this.f2        = f2;
 }