示例#1
0
 void HandleClientActivity(object sender, IClientEventArgs <byte, byte> args)
 {
     if (OnClientActivity != null)
     {
         var client = clients [args.Client];
         OnClientActivity(this, new ClientActivityArgs <Request, Response> (client));
     }
 }
示例#2
0
 void HandleClientActivity(object sender, IClientEventArgs <byte, byte> args)
 {
     if (OnClientActivity != null)
     {
         var client = clients [args.Client];
         OnClientActivity(this, new ClientActivityArgs <byte, StreamMessage> (client));
     }
 }
示例#3
0
 void HandleClientConnected(object sender, IClientEventArgs <byte, byte> args)
 {
     // Note: pendingClients and clients dictionaries are updated from HandleClientRequestingConnection
     if (OnClientConnected != null)
     {
         var client = clients [args.Client];
         OnClientConnected(this, new ClientConnectedArgs <byte, StreamMessage> (client));
     }
 }
示例#4
0
        void HandleClientDisconnected(object sender, IClientEventArgs <byte, byte> args)
        {
            var client = clients [args.Client];

            clients.Remove(args.Client);
            if (OnClientDisconnected != null)
            {
                OnClientDisconnected(this, new ClientDisconnectedArgs <byte, StreamMessage> (client));
            }
        }
示例#5
0
        void HandleClientDisconnected(object sender, IClientEventArgs <byte, byte> args)
        {
            var client = clients [args.Client];

            closedClientsBytesRead    += client.Stream.BytesRead;
            closedClientsBytesWritten += client.Stream.BytesWritten;
            clients.Remove(args.Client);
            if (OnClientDisconnected != null)
            {
                OnClientDisconnected(this, new ClientDisconnectedArgs <Request, Response> (client));
            }
        }
示例#6
0
文件: Program.cs 项目: EBassie/Potato
        // Critical: You need to create a new project, not reuse this project.
        //           The critical part is the assembly GUID, which must be unique per plugin
        //           but then remain constant over your releases.
        //           Potato uses the GUID to pipe through events/commands.

        public override void ClientEvent(IClientEventArgs e) {
            // Unless you specifically want to override some of the plugins default
            // functionality, you should always call the base method.
            base.ClientEvent(e);

            // See Potato.Net.ClientEventType enum for descriptions of each possible event.
            if (e.EventType == ClientEventType.ClientPacketReceived) {
                IPacket packet = e.Now.Packets.First();

                Console.WriteLine("Program.ClientEvent.ClientPacketReceived: {0} {1} {2} {3}", packet.Origin, packet.Type, packet.RequestId, packet.DebugText);
            }
            // else more!
        }
示例#7
0
        protected void Connection_ClientEvent(IClientEventArgs e)
        {
            if (this.InvokeRequired == true) {
                this.Invoke(new Action<ClientEventArgs>(this.Connection_ClientEvent), e);
                return;
            }

            if (e.EventType == ClientEventType.ClientConnectionStateChange) {
                this.ConsoleAppendLine("State: ^6{0}", e.ConnectionState.ToString());
            }
            else if (e.EventType == ClientEventType.ClientConnectionFailure || e.EventType == ClientEventType.ClientSocketException) {
                this.ConsoleAppendLine("^1Error: {0}", e.Now.Exceptions.FirstOrDefault());
            }
            else if (e.EventType == ClientEventType.ClientPacketSent) {
                this.ConsoleAppendLine("^2SEND: {0}", e.Now.Packets.First().DebugText);
            }
            else if (e.EventType == ClientEventType.ClientPacketReceived) {
                this.ConsoleAppendLine("^5RECV: {0}", e.Now.Packets.First().DebugText);
            }
        }
 /// <summary>
 /// Mocks a call to the client event
 /// </summary>
 public void MockClientEvent(IClientEventArgs args) {
     if (this.ClientEvent != null) {
         this.ClientEvent(this, args);
     }
 }
示例#9
0
        private void Connection_ClientEvent(IClientEventArgs e)
        {
            if (this.InvokeRequired == true) {
                this.Invoke(new Action<IClientEventArgs>(this.Connection_ClientEvent), e);
                return;
            }

            if (this.tbcPanels.SelectedIndex == 0 || this.chkVerboseLogging.Checked == true) {
                if (e.EventType == ClientEventType.ClientConnectionStateChange) {
                    this.ConsoleAppendLine("State: ^6{0}", e.ConnectionState.ToString());

                    if (e.ConnectionState == ConnectionState.ConnectionDisconnected) {
                        this.btnConnect.Text = @"Connect";
                        this.pnlConnection.Enabled = true;
                    }
                    else {
                        this.pnlConnection.Enabled = false;
                        this.btnConnect.Text = @"Disconnect";
                    }
                }
                else if (e.EventType == ClientEventType.ClientConnectionFailure || e.EventType == ClientEventType.ClientSocketException) {
                    this.ConsoleAppendLine("^1Error: {0}", e.Now.Exceptions.FirstOrDefault());
                }
                else if (e.EventType == ClientEventType.ClientPacketSent && e.Now.Packets.Count > 0) {
                    this.ConsoleAppendLine("^2SEND: {0}", e.Now.Packets.First().DebugText);
                }
                else if (e.EventType == ClientEventType.ClientPacketReceived && e.Now.Packets.Count > 0) {
                    this.ConsoleAppendLine("^5RECV: {0}", e.Now.Packets.First().DebugText);
                }
            }
        }
 public void FireClientEvent(IClientEventArgs args)
 {
     if (this.ClientEvent != null) {
         this.ClientEvent(args);
     }
 }
示例#11
0
        public virtual void ClientEvent(IClientEventArgs e) {
            if (e.EventType == ClientEventType.ClientActionDone) {
                INetworkAction doneAction = e.Then.Actions.FirstOrDefault();

                if (doneAction != null) {
                    IDeferredAction deferredAction;

                    if (this.DeferredActions.TryRemove(doneAction.Uid, out deferredAction) == true && deferredAction.TryInsertDone(doneAction, e.Then.Packets, e.Now.Packets) == true) {
                        deferredAction.TryInsertAlways(doneAction);

                        deferredAction.Release();
                    }
                }
            }
            else if (e.EventType == ClientEventType.ClientActionExpired) {
                INetworkAction doneAction = e.Then.Actions.FirstOrDefault();

                if (doneAction != null) {
                    IDeferredAction deferredAction;

                    if (this.DeferredActions.TryRemove(doneAction.Uid, out deferredAction) == true && deferredAction.TryInsertExpired(doneAction, e.Then.Packets, e.Now.Packets) == true) {
                        deferredAction.TryInsertAlways(doneAction);

                        deferredAction.Release();
                    }
                }
            }
        }
示例#12
0
 private void Connection_ClientEvent(IClientEventArgs e) {
     if (this.ClientEventStream != null) {
         this.ClientEventStream.Call(e);
     }
 }
示例#13
0
        private void Protocol_ClientEvent(IClientEventArgs e) {
            if (e.EventType == ClientEventType.ClientConnectionStateChange) {
                if (this.Protocol != null) {
                    var options = this.Protocol.Options;

                    if (options != null) {
                        this.ConnectionModel.ProtocolType = this.Protocol.ProtocolType as ProtocolType;
                        this.ConnectionModel.Hostname = options.Hostname;
                        this.ConnectionModel.Port = options.Port;

                        // Once connected, sync the connection.
                        if (e.ConnectionState == ConnectionState.ConnectionLoggedIn) {
                            this.Protocol.Synchronize();
                        }
                    }
                }

                this.Shared.Events.Log(new GenericEvent() {
                    Name = e.ConnectionState.ToString(),
                    Scope = new CommandData() {
                        Connections = new List<ConnectionModel>() {
                            this.ConnectionModel
                        }
                    },
                    Stamp = e.Stamp
                });
            }
            else if (e.EventType == ClientEventType.ClientConnectionFailure || e.EventType == ClientEventType.ClientSocketException) {
                this.Shared.Events.Log(new GenericEvent() {
                    Name = e.EventType.ToString(),
                    Message = e.Now.Exceptions.FirstOrDefault(),
                    Scope = new CommandData() {
                        Connections = new List<ConnectionModel>() {
                            this.ConnectionModel
                        }
                    },
                    Stamp = e.Stamp
                });
            }

            if (this.ClientEvent != null) {
                this.ClientEvent(e);
            }
        }