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); } } } }
/// <summary> /// P2P 그룹의 모든 유저에게 데이터를 전송함 /// </summary> /// <param name="dataWriter">전송할 데이터</param> /// <param name="deliveryMethod">전송 방식</param> public void SendAll(NetDataWriter dataWriter, DeliveryMethod deliveryMethod) { P2pGroup?.SendAll(dataWriter, deliveryMethod); }