private void SendP2pInternal( NetDataWriter writer, ushort sessionId, DeliveryMethod deliveryMethod) { if (deliveryMethod == DeliveryMethod.Tcp) { _logger.LogError("not support tcp transfer in p2p"); return; } if (sessionId == SessionId) { // 내가 받아야 한다면 _readerForSendInternal.SetSource(writer); OnP2pReceive(this, _readerForSendInternal); } else { var member = P2pGroup.Find(sessionId); if (member != null) { member.SendAsync(writer, deliveryMethod); } } }
private void SendP2pInternal( NetDataWriter writer, DeliveryTarget deliveryTarget, DeliveryMethod deliveryMethod) { if (deliveryMethod == DeliveryMethod.Tcp) { _logger.LogError("not support tcp transfer in p2p"); return; } if (P2pGroup == null) { _logger.LogWarning("No joined any P2pGroup"); return; } if (deliveryTarget == DeliveryTarget.All) { P2pGroup.SendAll(writer, deliveryMethod); _readerForSendInternal.SetSource(writer); OnP2pReceive(this, _readerForSendInternal); } else if (deliveryTarget == DeliveryTarget.Others) { P2pGroup.SendAll(writer, deliveryMethod); } else if (deliveryTarget == DeliveryTarget.Master) { var member = P2pGroup.Find(P2pGroup.MasterSessionId); if (member != null) { if (member.IsMine()) { // 내가 마스터라면 바로 호출함 _readerForSendInternal.SetSource(writer); OnP2pReceive(this, _readerForSendInternal); } else { member.SendAsync(writer, deliveryMethod); } } } }