Skip to content

MultipeerConnectivity Callback

Forest Lee edited this page Dec 3, 2024 · 1 revision

MultipeerConectivity의 파편화된 파일 전송 완료 콜백

  • 키워드: Progress, Actor, Continuation

MultipeerConectivity는 연결된 피어에게 데이터를 전송하는 여러 방법이 있음. 팀은 그중 sendResource() 를 사용하기로 결정했음. 동영상 동시 편집을 위해 한번에 다수의 피어에게 파일을 전송하고 있음. 이때 피어들의 정상적인 수신은 동시 편집을 시작할 수 있는 조건임. 때문에 앱의 정삭적인 기능을 위해 파일 전송 완료를 파악하는 것은 서비스에서 중요했음.

sendResource()를 통해 데이터를 전송했을 때, 전송 완료/실패는 2가지가 경로를 통해 알 수 있음.

  1. sendResource의 반환 타입은 Progress?(옵셔널) 이고, nil이면 전송 시작에 실패했다는 것
  2. sendResource에 부착한 완료 핸들러를 통해 Error?를 받을 수 있고, Error != nil이면 전송 완료에 실패했다는 것

sendResource()는 Asynchronous Nonblocking (≠async) 함수이기 때문에, 완료는 여러 스레드에서 동시에 발생할 수 있음. 따라서 작업의 완료를 세는 Actor 타입의 Counter를 만들어 완료 핸들러를 통해 각 작업의 완료를 검사했음. 또한 병렬적인 sendResource() 호출 전체를 Continuation으로 감싸 완료, 실패 여부를 반환할 수 있도록 했음

차은우원빈현빈장원영의

개발 스토리

✏️ 기획


✔️ 규칙


📌 1주차 회의록

데일리 스크럼

회의록

회고

📌 2주차 회의록

데일리 스크럼

회의록

회고

📌 3주차 회의록

데일리 스크럼

회의록

회고

📌 4주차 회의록

데일리 스크럼

회의록

회고

📌 5주차 회의록

데일리 스크럼

회의록

회고

📌 6주차 회의록

데일리 스크럼

회의록

회고


🔥 트러블슈팅

Clone this wiki locally