Skip to content

response 모듈

uhm0311 edited this page Apr 20, 2022 · 1 revision

response 모듈

response 모듈은 io 모듈을 통해 socket read를 수행하고 그 결과를 객체로 반환하는 read 유틸리티 모듈입니다.

response 모듈의 진입점이 되는 함수로는 memcached_read_one_response(), memcached_response(), memcached_coll_response(), memcached_coll_smget_response() 함수가 있습니다.

memcached_read_one_response()

ascii 프로토콜을 사용하여 textual_read_one_response() 함수를 호출합니다.

textual_read_one_response() 함수가 실패했을 경우 io reset으로 read 버퍼와 write 버퍼를 비우고 socket 연결을 해제합니다.

이 때 메모리가 부족하여 발생한 실패라면 delayed reconnect를, 그렇지 않다면 immediate reconnect를 수행합니다.

textual_read_one_response()

textual_read_one_response() 함수에서는 io 모듈의 memcached_io_readline() 함수를 호출합니다.

즉, read one response란 \n으로 끝나는 한 라인을 읽어 객체로 반환하는 기능을 수행하는 것입니다.

arcus-memcached에서 반환하는 응답의 종류는 arcus-memcached 문서를 참고해주세요.

memcached_response()

memcached_response() 함수는 while 문으로 memcached_read_one_response() 함수를 호출합니다.

즉, arcus-memcached의 응답이 여러 라인으로 구성되어 있을 때 사용됩니다.

memcached_coll_response()

기존 memcached에 포함되지 않은, collection 연산을 요청한 뒤 그 결과를 받아오기 위해 호출하는 함수입니다.

memcached_response() 함수와 유사하게 while 문으로 memcached_read_one_coll_response() 함수를 호출합니다.

memcached_read_one_coll_response()

memcached_read_one_coll_response() 함수는 내부적으로 textual_read_one_coll_response() 함수를 호출한다는 점을 제외하면 memcached_read_one_response() 함수와 같은 에러 처리 로직을 갖고 있습니다.

textual_read_one_coll_response()

  • textual_read_one_coll_response() 함수 또한 textual_read_one_response() 함수와 유사하게 io 모듈의 memcached_io_readline() 함수를 호출합니다.

  • arcus-memcached에서 반환하는 collection 응답의 종류는 arcus-memcached 문서를 참고해주세요.

memcached_coll_smget_response()

memcached_coll_smget_response() 함수는 b+tree 구조의 collection에서 Sort Merge and Get 연산을 요청했을 때의 결과를 받아오기 위해 호출하는 함수입니다.

memcached_response() 함수와 유사하게 while 문으로 memcached_read_one_coll_smget_response() 함수를 호출합니다.

memcached_read_one_coll_smget_response()

memcached_read_one_coll_response() 함수는 내부적으로 textual_read_one_coll_smget_response() 함수를 호출한다는 점을 제외하면 memcached_read_one_response() 함수와 같은 에러 처리 로직을 갖고 있습니다.

textual_read_one_coll_smget_response()

  • textual_read_one_coll_smget_response() 함수 또한 textual_read_one_response() 함수와 유사하게 io 모듈의 memcached_io_readline() 함수를 호출합니다.

  • arcus-memcached에서 반환하는 b+tree collection의 SMGet 연산의 응답 종류는 arcus-memcached 문서의 b+tree 부분을 참고해주세요.