Ask Your Question
0

외부 로그인이나 결제 인증시에 비동기 방식중에..

asked 2019-10-17 15:34:18 +0900

arksh gravatar image

외부 로그인이나 결제를 비동기 방식으로 구현하면,

요청을 한 세션에 결과를 돌려줘야 하는데,

콜백함수에 세션정보가 없어서..

효과적으로 처리할 수 있는 방법에 대해 조언 부탁드립니다.

edit retag flag offensive close merge delete

2 answers

Sort by » oldest newest most voted
0

answered 2019-10-17 15:39:43 +0900

Seunghyun gravatar image

updated 2019-10-17 15:40:02 +0900

안녕하세요. 아이펀팩토리입니다.

다음 두 가지 방법이 유용합니다.

  1. stl, boost 의 bind
void Callback(const Ptr<session> &session, ...) {
}

void OnXxx(const Ptr<session> &session, ...) {
  XxxHandler handler = bind(&Callback, session, _1, _2, ...); // _1, _2 는 XxxHnadler 의 인자
  여기서 이 handler 를 콜백으로 사용하면 session 이 함께 전달됩니다.
}
  1. 람다 함수
void OnXxx(const Ptr<session> &session, ...) {
  XxxHandler handler = [session /* 여기있는 변수가 함께 전달됩니다*/](...) {  // ... 은 XxxHandler 의 인자
     // 이 곳이 콜백함수입니다.
  };

  여기서 이 handler 를 콜백으로 사용하면 session 이 함께 전달됩니다.
}

인터넷에 다양한 자료들이 있으니 참고하시면 도움이 되실 듯 합니다.

감사합니다.

edit flag offensive delete link more

Comments

네..그런데..

예제의 페이스북 비동기 인증에서 호출하는

Authenticate 함수에는 제가 핸들러의 인자값을 수정할 수가 없는데요..

arksh gravatar imagearksh ( 2019-10-17 16:01:36 +0900 )edit

해당 예제를 수정하여 새로운 답변으로 올려두었습니다.

Seunghyun gravatar imageSeunghyun ( 2019-10-17 16:09:59 +0900 )edit
0

answered 2019-10-17 16:09:21 +0900

Seunghyun gravatar image

updated 2019-10-17 16:10:15 +0900

첫 답변의 코멘트를 여기로 드립니다.

해당 예제를 bind 를 사용하게 수정한 예입니다.

void OnAuthenticated(const Ptr<session> &session,
                     const AppleGameCenterAuthenticationRequest2 &request,
                     const AppleGameCenterAuthenticationResponse &response,
                     bool error) {
...
}

void OnLogin(const Ptr<session> &session, ...) {
  ...
  Authenticate(request, bind(&OnAuthenticated, session, _1, _2, _3));
}
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2019-10-17 15:34:18 +0900

Seen: 39 times

Last updated: Oct 17