Esempio n. 1
0
        public override void OnConnect()
        {
            TestTools.LogTonkStatus(this);

            Tonk.Status status = GetStatus();

            List <MyServerConnection> connections = Server.GetConnections();

            connections.ForEach(connection =>
            {
                Tonk.Status cs = connection.GetStatus();

                // Send other clients info about connecting client
                if (connection != this)
                {
                    Console.WriteLine("Broadcasting connection {0} about {1} connecting", cs.LocallyAssignedIdForRemoteHost,
                                      status.LocallyAssignedIdForRemoteHost);

                    byte[] assignIdMsg = new byte[1 + 4];
                    unsafe
                    {
                        fixed(byte *ptr = assignIdMsg)
                        {
                            ptr[0] = Constants.ID_ConnectionAdded;
                            Tonk.WriteU32_LE(ptr + 1, status.LocallyAssignedIdForRemoteHost);
                        }
                    }
                    connection.Send(assignIdMsg);
                }

                // Send connecting client info about other clients
                byte[] userListIdMsg = new byte[1 + 4];
                unsafe
                {
                    fixed(byte *ptr = userListIdMsg)
                    {
                        ptr[0] = Constants.ID_ConnectionAdded;
                        Tonk.WriteU32_LE(ptr + 1, cs.LocallyAssignedIdForRemoteHost);
                    }
                }
                Send(userListIdMsg);
            });
        }