Syntax
Members
priority int8_t
채팅 데이터 또는 다른 로컬 엔드포인트에서 보낸 메시지에 대한 로컬 큐잉 메시지의 우선순위입니다.
priority는 c_minSendMessageQueuingPriority와 c_maxSendMessageQueuingPriority 사이(양 끝 값 포함)의 값이어야 합니다. 숫자가 클수록 낮은 숫자에 비해 상대적 우선순위가 더 높음(먼저 전송됨)을 나타냅니다. PartyLocalEndpoint::SendMessage()에 PartySendMessageQueuingConfiguration 구조체가 제공되지 않는 경우의 기본값은 부호 있는 정수 범위의 정확히 중간(0)에 있는 c_defaultSendMessageQueuingPriority입니다. 전송 큐 우선순위는 특정 로컬 엔드포인트에서 보낸 메시지가 전송되거나 배달되는 순서를 수정하지 않습니다. 이는 서로 다른 로컬 엔드포인트의 메시지 순서 또는 엔드포인트와 내부적으로 전송된 채팅 데이터(우선순위
c_chatSendMessageQueuingPriority 사용) 간의 순서에만 영향을 미칩니다. 가장 높은 우선순위 값을 가진 메시지를 보유한 로컬 엔드포인트 전송 큐가 먼저 자신의 메시지에 대한 전송 자격을 갖게 됩니다. 로컬 엔드포인트에서 큐에 있는 나머지 모든 메시지의 우선순위가 같으면, 개별 메시지는 PartyLocalEndpoint::SendMessage() 호출이 발생한 순서와 동일한 순서로 전송 자격을 갖게 됩니다. 이 동작을 이해하는 한 가지 방법은, 우선순위가 높은 메시지가 로컬 엔드포인트에서 이전에 전송한 메시지들의 순차적 배달 기대치를 깨지 않으면서 우선순위가 높은 메시지의 시기적절한 배달을 보장하기 위해 동일한 로컬 엔드포인트의 모든 이전 메시지의 우선순위를 동일한 값으로 자동으로 격상시키는 것으로 생각하는 것입니다. 다른 로컬 엔드포인트는 자체 전송 시퀀스가 있으므로 그러한 순서 보장이 없습니다(단, Party 라이브러리는 가능한 경우 원래 전송된 순서를 유지하기 위해 최선의 노력을 시도합니다).
메시지의 전송 큐 우선순위는 연결 품질이나 수신자 응답성으로 인해 연결이 지원할 수 있는 것보다 더 많은 바이트를 보내야 할 때 중요합니다. 더 중요한 메시지를 더 높은 우선순위로 보내면 이들이 제한된 네트워크 리소스를 사용할 첫 번째 기회를 얻을 수 있습니다. 성공적으로 전송될 수 있는 것보다 빠르게 메시지 전송을 계속하면 우선순위가 낮은 메시지가 “굶어(starved)” 죽고 관련된 로컬 엔드포인트 전송 큐가 계속 증가할 수 있습니다. 이러한 잠재적 증가는 PartyLocalEndpoint::CancelMessages()를 사용하여 불필요한 메시지를 취소하거나,
timeoutInMilliseconds 필드를 사용하여 너무 오래 큐에 있던 메시지의 시간 제한을 자동으로 지정하거나, 단순히 PartyLocalEndpoint::SendMessage() 호출의 크기 및/또는 빈도를 줄여서 관리해야 합니다.
identityForCancelFilters uint32_t
취소 필터 표현식으로 메시지의 적용 가능성을 평가할 때 사용할 호출자 정의 값입니다.
이 메시지 아이덴티티 값은 호출자 특정 의미를 가질 수 있으며, PartyLocalEndpoint::CancelMessages()가 메시지가 선택적으로 제공된 취소 필터 표현식과 일치하는지 여부를 평가할 때 사용하는 것 외에는 Party 라이브러리에서 해석되지 않습니다. PartyLocalEndpoint::SendMessage()에 PartySendMessageQueuingConfiguration 구조체가 제공되지 않으면 기본값 0이 사용됩니다.
메시지 취소는 네트워크 상태가 좋지 않을 때 로컬 전송 큐가 과도하게 커지는 것을 방지하는 데 도움이 될 수 있습니다. 특정 필터 표현식과 일치하는 메시지 아이덴티티를 취소하는 것은 정기적으로 최신 정보와 함께 전송되는 메시지 범주가 있고 아직 전송 기회를 기다리고 있을 수 있는 이전에 큐에 있었던 오래된 메시지를 대체해야 하는 경우 잘 작동합니다. 취소는 손실이 치명적이지 않고 더 가치 있는 큐잉 메시지 대신 전송을 시도할 만한 대역폭이 아까운 기회성 메시지의 인스턴스 또는 범주가 있을 때도 유용할 수 있습니다.
이 로컬 아이덴티티 값은 전송된 데이터 페이로드의 일부가 아닙니다. 메시지가 전송을 시작하고 더 이상 PartyLocalEndpoint::CancelMessages()에 의해 로컬 전송 큐에서 제거될 수 없게 되면 적용성이 없습니다.
timeoutInMilliseconds uint32_t
메시지가 전송 기회를 기다리며 Party가 관리하는 전송 큐에 남아 있도록 허용되는 최대 시간(밀리초)입니다.
이 시간 제한이 경과했을 때 연결 품질이나 수신자 응답성으로 인해 메시지가 전송을 시작하지 않은 경우, 메시지가 중단되고 전송되지 않은 채 큐에서 제거됩니다. timeoutInMilliseconds 값이 0이면 시간 제한이 없어야 하고 메시지가 성공적으로 전송되거나, 명시적으로 취소되거나, 원격 연결 끊김 같은 일부 전송 실패가 발생할 때까지 큐에 남아 있어야 함을 나타냅니다. PartyLocalEndpoint::SendMessage()에 PartySendMessageQueuingConfiguration 구조체가 제공되지 않으면 0이 기본값입니다. 메시지 전송 큐 시간 제한은 네트워크 상태가 좋지 않을 때 전송 큐가 과도하게 커지는 것을 방지하는 데 도움이 될 수 있습니다. 시간에 민감한 주기적 데이터를 포함하는 메시지에 잘 작동하는데, 더 새로운 완전한 대체 메시지가 정기적으로 전송되기 때문에 오래된 메시지를 전송하는 것은 대역폭 낭비이고 개별 메시지의 손실은 치명적이지 않습니다.
이 시간 제한 값은 Party가 관리하는 전송 큐잉에만 영향을 미칩니다. 메시지를 실제로 전송하는 데 걸리는 시간(환경적 지연 시간)에는 영향을 미치지 않으며, 해당하는 경우 수신자가 전송을 확인하는 데 기다리는 시간을 변경하지 않습니다.
이 시간 제한 값은 직접 피어 연결이 없는 대상에 전송할 때 두 번 평가됩니다. 한 번은 전송 클라이언트의 로컬 전송 큐에서 투명 클라우드 릴레이로 전송하는 데 대해 로컬 환경 조건과 릴레이로의 전송 속도의 영향을 받으며, 두 번째는 릴레이 자체에서 발생하는데, 이는 원격 대상의 다른 네트워크 상태, 전송 속도 또는 응답성을 기반으로 전달 전에 메시지를 큐에 넣어야 할 수 있기 때문입니다.
Requirements
Header: Party.h함께 보기
Party membersPartyLocalEndpoint::SendMessage
