private void AddPreviousGamer(NetworkGamer gamer) { previousGamers.Add(gamer); if (previousGamers.Count > MaxPreviousGamers) { previousGamers.RemoveAt(0); } }
public void SendData(PacketWriter data, SendDataOptions options, NetworkGamer recipient) { if (recipient == null) { throw new NullReferenceException("recipient"); } try { InternalSendData(data, options, recipient); } catch { throw; } }
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; } }
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; }
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); }
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)); }
public GamerLeftEventArgs(NetworkGamer gamer) { this.Gamer = gamer; }
public GamerJoinedEventArgs(NetworkGamer gamer) { this.Gamer = gamer; }
public HostChangedEventArgs(NetworkGamer oldHost, NetworkGamer newHost) { this.OldHost = oldHost; this.NewHost = newHost; }
public void EnableSendVoice(NetworkGamer remoteGamer, bool enable) { throw new NotImplementedException(); }
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)); }
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; } }
// Receiving data public int ReceiveData(byte[] data, out NetworkGamer sender) { try { return(ReceiveData(data, 0, out sender)); } catch { throw; } }
public InboundPacket(Packet packet, NetworkGamer sender) { this.packet = packet; this.sender = sender; }
internal WriteLeaderboardsEventArgs(NetworkGamer gamer, bool isLeaving) { this.Gamer = gamer; this.IsLeaving = isLeaving; }
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); }
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)); }