Example #1
0
        private void AddPreviousGamer(NetworkGamer gamer)
        {
            previousGamers.Add(gamer);

            if (previousGamers.Count > MaxPreviousGamers)
            {
                previousGamers.RemoveAt(0);
            }
        }
Example #2
0
        public void SendData(PacketWriter data, SendDataOptions options, NetworkGamer recipient)
        {
            if (recipient == null)
            {
                throw new NullReferenceException("recipient");
            }

            try { InternalSendData(data, options, recipient); }
            catch { throw; }
        }
Example #3
0
        public void SendData(byte[] data, SendDataOptions options, NetworkGamer recipient)
        {
            if (recipient == null)
            {
                throw new NullReferenceException("recipient");
            }

            try { InternalSendData(data, 0, data.Length, options, recipient); }
            catch { throw; }
        }
Example #4
0
        private void InternalSendData(PacketWriter data, SendDataOptions options, NetworkGamer recipient)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (data.Length == 0)
            {
                throw new NetworkException("PacketWriter empty");
            }

            session.SendUserMessage(this, options, data, recipient);

            data.BaseStream.SetLength(0);
            data.BaseStream.Position = 0;
        }
Example #5
0
        public int ReceiveData(PacketReader data, out NetworkGamer sender)
        {
            if (inboundPacketIndex >= inboundPackets.Count)
            {
                sender = null;
                return(0);
            }

            var inboundPacket = inboundPackets[inboundPacketIndex++];

            data.BaseStream.SetLength(0);
            data.BaseStream.Position = 0;
            data.BaseStream.Write(inboundPacket.packet.data, 0, inboundPacket.packet.length);
            data.BaseStream.Position = 0;

            sender = inboundPacket.sender;
            return(inboundPacket.packet.length);
        }
Example #6
0
        private void AddGamer(NetworkGamer gamer)
        {
            if (gamer.state != NetworkGamerState.Pending)
            {
                throw new InvalidOperationException("Only new gamers can be added");
            }
            gamer.state = NetworkGamerState.Added;

            gamer.machine.gamers.Add(gamer);

            allGamers.Add(gamer);
            allGamers.Sort(NetworkGamerIdComparer.Instance);

            if (gamer.IsLocal)
            {
                var localGamer = (LocalNetworkGamer)gamer;
                localGamers.Add(localGamer);
                localGamers.Sort(NetworkGamerIdComparer.Instance);
                localGamerFromSignedInGamer.Add(localGamer.signedInGamer, localGamer);
            }
            else
            {
                remoteGamers.Add(gamer);
                remoteGamers.Sort(NetworkGamerIdComparer.Instance);
            }

            if (!gamerFromId.ContainsKey(gamer.id))
            {
                gamerFromId.Add(gamer.id, gamer);
            }
            if (gamerFromId[gamer.id] != gamer)
            {
                throw new InvalidOperationException();
            }

            InvokeGamerJoinedEvent(new GamerJoinedEventArgs(gamer));
        }
Example #7
0
 public GamerLeftEventArgs(NetworkGamer gamer)
 {
     this.Gamer = gamer;
 }
Example #8
0
 public GamerJoinedEventArgs(NetworkGamer gamer)
 {
     this.Gamer = gamer;
 }
Example #9
0
 public HostChangedEventArgs(NetworkGamer oldHost, NetworkGamer newHost)
 {
     this.OldHost = oldHost;
     this.NewHost = newHost;
 }
Example #10
0
 public void EnableSendVoice(NetworkGamer remoteGamer, bool enable)
 {
     throw new NotImplementedException();
 }
Example #11
0
        internal void SendUserMessage(LocalNetworkGamer sender, SendDataOptions options, PacketWriter data, NetworkGamer recipient = null)
        {
            var msg = CreateMessageWithHeader(MessageType.User, recipient != null ? recipient.machine : null);

            msg.Write(sender.id);
            msg.Write((byte)(recipient == null ? 255 : recipient.id));
            msg.Write((byte)options);

            msg.Write(data.Length);
            data.BaseStream.Position = 0;
            int dataByte;

            while ((dataByte = data.BaseStream.ReadByte()) != -1)
            {
                msg.Write((byte)dataByte);
            }

            SendMessage(msg, ToDeliveryMethod(options));
        }
Example #12
0
        public void SendData(byte[] data, int offset, int count, SendDataOptions options, NetworkGamer recipient)
        {
            if (recipient == null)
            {
                throw new NullReferenceException("recipient");
            }

            try { InternalSendData(data, offset, count, options, recipient); }
            catch { throw; }
        }
Example #13
0
 // Receiving data
 public int ReceiveData(byte[] data, out NetworkGamer sender)
 {
     try { return(ReceiveData(data, 0, out sender)); }
     catch { throw; }
 }
Example #14
0
 public InboundPacket(Packet packet, NetworkGamer sender)
 {
     this.packet = packet;
     this.sender = sender;
 }
Example #15
0
 internal WriteLeaderboardsEventArgs(NetworkGamer gamer, bool isLeaving)
 {
     this.Gamer     = gamer;
     this.IsLeaving = isLeaving;
 }
Example #16
0
        private void InternalSendData(byte[] data, int offset, int count, SendDataOptions options, NetworkGamer recipient)
        {
            if (data == null)
            {
                throw new NullReferenceException("data");
            }
            if (data.Length == 0)
            {
                throw new NetworkException("data empty");
            }
            if (offset < 0 || offset >= data.Length)
            {
                throw new ArgumentOutOfRangeException("offset");
            }
            if (count <= 0 || offset + count > data.Length)
            {
                throw new ArgumentOutOfRangeException("count");
            }

            session.SendUserMessage(this, options, data, recipient);
        }
Example #17
0
        internal void SendUserMessage(LocalNetworkGamer sender, SendDataOptions options, byte[] data, NetworkGamer recipient = null)
        {
            var msg = CreateMessageWithHeader(MessageType.User, recipient != null ? recipient.machine : null);

            msg.Write(sender.id);
            msg.Write((byte)(recipient == null ? 255 : recipient.id));
            msg.Write((byte)options);
            msg.Write(data.Length);
            msg.Write(data);
            SendMessage(msg, ToDeliveryMethod(options));
        }