- 뒤끝 SDK 버전 : 5.9.4
- 프로젝트명 : DarkStone
뒤끝 SDK에서 Enqueue로 입력된 명령들은 순서를 보장하는 것으로 알고있지만
제가 컨트롤가능한 어플리케이션 영역에서 한번 체크를 하고자 하는데 올바른 방향인지 검토를 받고자 합니다
(통신 실패에 대한 구현은 예제입니다 미구현을 이해 부탁드립니다)
내용이 난해합니다 ㅠㅠ 혹시 부족한 부분이 있다면 답글주시면 보강하겠습니다
먼저 1입력, 2입력을 연속으로 enqueue 했다고 가정하겠습니다
제가 이해한것으로는 @@@컴퓨터 처리@@@ 순으로 진행되는 것으로 알고 있습니다
질문1)
1입력에 대한 결과가 1-1 / 1-2로 처리 될것이고, 1입력에 대한 if(callback.IsSuccess()) {}를 벗어난 뒤에
2입력을 처리하게 뒤끝 SDK가 되어있는 걸까요?
즉 1-1 혹은 1-2 / 1-2-1을 모두 처리하고 한뒤에 함수를 벗어나야 2입력이 poll되어 처리되는지 순서가 궁금합니다
질문2)
만약 @@@컴퓨터 처리 1-2-1 @@@로 빠져서 비동기 통신을 하게 되면 입력 2에 대한 poll은 비동기 통신이 모두 끝날때까지 기다리게 될까요?
질문3)
하기와 같은 상황에서 tx를 tempTx에 임시 저장하고 수신받았을때 rx값과 비교하였을때 틀리면 순서가 틀려진것으로 검증할려는데 올바른 방향일까요?
// 1 입력
ulong tx=0;
ulong rx=0;
tx++; //값 1로 세팅
ulong tempTx1 = tx; //tempTx에 1 저장
SendQueue.Enqueue(Backend.GameData.TransactionWriteV2,transList,(callback) =>{
rx++; //rx값 1;
ebug.Log($"응답됨 tx:{tempTx} / 현재 rx:{rx}"); //tx 1에대한 rx1확인
if(callback.IsSuccess()) {
// @@@컴퓨터 처리 1-1 @@@
Debug.Log("데이터 업데이트 완료");
} else {
// @@@컴퓨터 처리 1-2 @@@
Debug.Log(callback.GetMessage());
// @@@컴퓨터 처리 1-2-1 @@@
//통신이 불안정합니다 로딩창...
for(int i=0;i<3;i++){
//질문2) 여기서 동기통신을 할 경우 2입력을 poll하지 않고 동기통신이 모두 끝날때까지 기다리는것인지...
var bro = Backend.GameData.TransactionWriteV2(transList);
if(bro.IsSuccess())break;
}
}
}); //질문1)여기를 벗어나야 2입력이 poll되어 송신 되는것인지...
// 2 입력
tx++; //값 2로 세팅
ulong tempTx2 = tx; //tempTx에 2 저장
SendQueue.Enqueue(Backend.GameData.TransactionWriteV2,transList,(callback) =>{
rx++; //rx값 2;
ebug.Log($"응답됨 tx:{tempTx} / 현재 rx:{rx}"); //tx 2에대한 rx2확인
//만약 tempTx값이 2이고 rx가 3이라면 다른 rx가 먼저 들어왔으니 오류라고 판단
if(callback.IsSuccess()) {
// @@@컴퓨터 처리 2-1 @@@
Debug.Log("데이터 업데이트 완료");
} else {
// @@@컴퓨터 처리 2-2 @@@
Debug.Log(callback.GetMessage());
// @@@컴퓨터 처리 2-2-1 @@@
//통신이 불안정합니다 로딩창...
for(int i=0;i<3;i++){
var bro = Backend.GameData.TransactionWriteV2(transList);
if(bro.IsSuccess())break;
}
}
});