ASYNC_WAIT_CTX_new(3) - wariua/manpages-ko GitHub Wiki
ASYNC_WAIT_CTX_new, ASYNC_WAIT_CTX_free, ASYNC_WAIT_CTX_set_wait_fd, ASYNC_WAIT_CTX_get_fd, ASYNC_WAIT_CTX_get_all_fds, ASYNC_WAIT_CTX_get_changed_fds, ASYNC_WAIT_CTX_clear_fd - λΉλκΈ° μμ μλ£ λκΈ°λ₯Ό κ΄λ¦¬νλ ν¨μλ€
#include <openssl/async.h>
ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void);
void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx);
int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key,
OSSL_ASYNC_FD fd,
void *custom_data,
void (*cleanup)(ASYNC_WAIT_CTX *, const void *,
OSSL_ASYNC_FD, void *));
int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key,
OSSL_ASYNC_FD *fd, void **custom_data);
int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd,
size_t *numfds);
int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd,
size_t *numaddfds, OSSL_ASYNC_FD *delfd,
size_t *numdelfds);
int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key);
OpenSSLμμ λΉλκΈ° λμμ ꡬννλ λ°©μμ λν κ°μλ ASYNC_start_job(3)μ 보λΌ. ASYNC_WAIT_CTX κ°μ²΄λ λΉλκΈ° "μΈμ ", μ¦ κ΄λ ¨ crypto μ°μ°λ€μ μ§ν©μ λνλΈλ€. μλ₯Ό λ€μ΄ SSL μ©μ΄λ‘λ SSL μ°κ²°(connection)κ³Ό μΌλμΌλ‘ λμνκ² λλ€.
μμ© μ½λμμ ASYNC_WAIT_CTX_new()
λ₯Ό μ΄μ©ν΄ ASYNC_WAIT_CTXλ₯Ό μμ±ν νμ ASYNC_start_job()
μ νΈμΆν΄μΌ νλ€. (ASYNC_start_job(3) μ°Έκ³ .) μμ
μμ λ κ·Έ μμ
κ³Ό ASYNC_WAIT_CTXκ° μ°κ³λλ€. ASYNC_WAIT_CTXλ νλ²μ ASYNC_JOB νλμλ§ μ¬μ©ν΄μΌ νλ©°, ASYNC_JOBμ΄ μλ£λ νμλ λ€λ₯Έ ASYNC_JOBμ μ¬μ¬μ©ν μ μλ€. μΈμ
μ΄ μλ£λμ λ (κ°λ Ή SSL μ°κ²°μ΄ λ«νμ λ) μμ© μ½λμμ ASYNC_WAIT_CTX_free()
λ‘ μ 리λ₯Ό νλ€.
ASYNC_WAIT_CTXμ "λκΈ°" νμΌ λμ€ν¬λ¦½ν°λ€μ μ°κ³ν μ μλ€. ASYNC_WAIT_CTX_get_all_fds()
λ₯Ό νΈμΆνλ©΄μ ctx
λ§€κ°λ³μμ ASYNC_WAIT_CTXμ λν ν¬μΈν°λ₯Ό μ£Όλ©΄ κ·Έ μμ
μ μ°κ³λ λκΈ° νμΌ λμ€ν¬λ¦½ν°λ€μ *fd
λ‘ λ°ννλ€. λ°ννλ νμΌ λμ€ν¬λ¦½ν°λ€μ μλ₯Ό *numfds
μ μ μ₯νλ€. λͺ¨λ νμΌ λμ€ν¬λ¦½ν°λ€μ λ°κΈ°μ μΆ©λΆν λ©λͺ¨λ¦¬λ₯Ό *fd
μ ν λΉνλ κ²μ νΈμΆμμ μ±
μμ΄λ€. fd
λ₯Ό NULL κ°μΌλ‘ ν΄μ ASYNC_WAIT_CTX_get_all_fds()
λ₯Ό νΈμΆνλ©΄ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ°ννμ§ μμ§λ§ *numfds
λ μ±μ΄λ€. λ°λΌμ 보ν΅μ μμ© μ½λμμ μ΄ ν¨μλ₯Ό λ λ² νΈμΆνκ² λλ€. ν λ²μ fd κ°μλ₯Ό μ»κΈ° μν΄μμ΄κ³ μΆ©λΆν λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ μ λ€μ νΈμΆνλ€. λΉλκΈ° μμ§μ ν κ°λ§ μ°κ³ μλ€λ©΄ μ΄ νΈμΆμ΄ νμ fd ν κ°λ§ λ°νν κ²μ΄λ€. λΉλκΈ° μμ§μ μ¬λ¬ κ° μ°κ³ μλ€λ©΄ μ¬λ¬ κ°λ₯Ό λ°νν μ μλ€.
ASYNC_WAIT_CTX_get_changed_fds()
ν¨μλ₯Ό μ΄μ©ν΄ ASYNC_start_job()
μ΄ ASYNC_PAUSE
λ₯Ό λ°ννλ λ§μ§λ§ νΈμΆ μμ μ΄ν (ASYNC_PAUSE
κ²°κ³Όλ₯Ό λ°μ μ μ΄ μλ€λ©΄ ASYNC_WAIT_CTXλ₯Ό μμ±ν μ΄ν) λ³κ²½λ fdκ° μλμ§ νμ§ν μ μλ€. μΆκ°λκ³ μμ λ fd κ°μ κ°κ°μ numaddfds
λ° numdelfds
λ§€κ°λ³μμ μ±μ΄λ€. κ·Έλ¦¬κ³ μΆκ°λκ³ μμ λ fdλ€μ λͺ©λ‘μ κ°κ° *addfd
λ° *delfd
μ μ±μ΄λ€. ASYNC_WAIT_CTX_get_all_fds()
μμμ²λΌ λ λ§€κ°λ³μ κ°κ°μ΄ NULLμΌ μ μμΌλ©°, NULLμ΄ μλ κ²½μ° μΆ©λΆν λ©λͺ¨λ¦¬λ₯Ό ν λΉνλ κ²μ νΈμΆμμ μ±
μμ΄λ€.
λΉλκΈ° μ§μ μ½λ(κ°λ Ή μμ§)λ₯Ό ꡬνν λλ μμ£Ό λ°λλ fdλ€μ΄ "μμΉλ½λ€μΉλ½" νλ κ±Έ μ€μ΄λλ‘ ASYNC_WAIT_CTXμ μλͺ λμ μμ μ μΈ fdλ₯Ό λ°ννλ κ² μ’λ€. νμ§λ§ μμ©μκ²λ μ΄μ λν μ΄λ€ 보μ₯λ μ 곡νμ§ μλλ€.
μμ©μμ selectλ poll κ°μ μμ€ν ν¨μ νΈμΆμ μ΄μ©ν΄ νμΌ λμ€ν¬λ¦½ν°κ° "μ½κΈ°" μ€λΉκ° λκΈ°λ₯Ό κΈ°λ€λ¦΄ μ μλ€. ("μ½κΈ°" μ€λΉκ° λλ κ²μ μμ μ μ¬κ°ν΄μΌ νλ€λ νμμ΄λ€.) μ 곡λ°λ νμΌ λμ€ν¬λ¦½ν°κ° μλ€λ©΄ μμ©μμ μ£ΌκΈ°μ μΌλ‘ μμ μ μ¬μμνλ λ°©μμΌλ‘ μμ μ΄ μ€νμ μ΄μ΄κ° μ€λΉκ° λμ΄ μλμ§ νμΈν΄ λ΄μΌ ν κ²μ΄λ€.
λΉλκΈ° μ§μ μ½λ(κ°λ Ή μμ§)μμ ASYNC_get_wait_ctx(3)λ₯Ό ν΅ν΄ μμ
μ νμ¬ ASYNC_WAIT_CTXλ₯Ό μ»μ μ μκ³ ASYNC_WAIT_CTX_set_wait_fd()
νΈμΆλ‘ λκΈ°μ μ¬μ©ν νμΌ λμ€ν¬λ¦½ν°λ₯Ό μ 곡ν μ μλ€. 보ν΅μ μμ§μμ ASYNC_pause_job()
μ νΈμΆνκΈ° μ§μ μ κ·Έλ κ² νλ©° λ§λ¨ μ¬μ©μκ° νμ§λ μλλ€. ASYNC_WAIT_CTX_get_fd()
λ₯Ό μ΄μ©ν΄ κΈ°μ‘΄μ μ°κ³ νμΌ λμ€ν¬λ¦½ν°λ₯Ό μ»μ μ μμΌλ©° ASYNC_WAIT_CTX_clear_fd()
λ₯Ό μ΄μ©ν΄ μ°κ³λ₯Ό μμ¨ μ μλ€. λ ν¨μ λͺ¨λ key
κ°μ νμλ‘ νλλ°, μ΄λ κ·Έ λΉλκΈ° μ§μ μ½λμ κ³ μ ν κ°μ΄λ€. μ μΌν μ΄λ€ κ°λ κ°λ₯νμ§λ§ μμ§μ λν ENGINE *
κ° μ’μ νλ³΄κ° λ κ²μ΄λ€. custom_data
λ§€κ°λ³μμλ μ΄λ€ κ°λ κ°λ₯νλ©° μ΄ν ASYNC_WAIT_CTX_get_fd()
νΈμΆμμ κ·Έ κ°μ λ°ννλ€. ASYNC_WAIT_CTX_set_wait_fd()
ν¨μμμλ "μ 리" 루ν΄μ λν ν¬μΈν°λ κΈ°λνλ€. NULLμΌ μλ μμ§λ§ μ 곡 μμλ κ·Έ ASYNC_WAIT_CTXκ° ν΄μ λ λ μλμΌλ‘ νΈμΆλλ―λ‘ μμ§μμ fdλ κΈ°ν μμμ λ«μ κΈ°νκ° λλ€. μ°Έκ³ : ASYNC_WAIT_CTX_clear_fd()
νΈμΆμ ν΅ν΄ fdλ₯Ό μ§μ μμ λ κ²½μ°μλ "μ 리" 루ν΄μ΄ νΈμΆλμ§ μλλ€.
μΌλ°μ μΈ μ¬μ©λ‘λ‘λ λΉλκΈ° μ§μ μμ§μ΄ μμ μ μλ€. μΌλ¨ μ¬μ©μ μ½λμμ μνΈ μ°μ°μ κ°μνλ€. μμ§μ΄ κ·Έ μ°μ°μ λΉλκΈ°μ μΌλ‘ κ°μνκ³ μ ASYNC_WAIT_CTX_set_wait_fd()
μ μ΄μ΄ ASYNC_pause_job()
μ νΈμΆν΄μ μ¬μ©μ μ½λλ‘ μ μ΄λ₯Ό λλ €μ€λ€. κ·Έλ¬λ©΄ μ¬μ©μ μ½λμμλ λ€λ₯Έ μμ
μ μννκ±°λ κ·Έ λκΈ° νμΌ λμ€ν¬λ¦½ν°μ "select" λ΄μ§ κΈ°ν μ μ¬ ν¨μλ₯Ό νΈμΆν΄μ μμ
μ΄ μ€λΉ μνκ° λκΈ°λ₯Ό κΈ°λ€λ¦΄ μ μλ€. κ·Έλ¦¬κ³ μμ§μμλ λκΈ° νμΌ λμ€ν¬λ¦½ν°λ₯Ό "μ½κΈ° κ°λ₯"μΌλ‘ λ§λ€μ΄μ μμ
μ μ¬κ°ν΄μΌ νλ€λ μ νΈλ₯Ό μ€ μ μλ€. μ€νμ΄ μ¬κ°λλ©΄ μμ§μμλ λκΈ° νμΌ λμ€ν¬λ¦½ν°μμ κΉ¨μ°λ μ νΈλ₯Ό μμ μΌ νλ€.
ASYNC_WAIT_CTX_new()
λ μλ‘ ν λΉν ASYNC_WAIT_CTXμ λν ν¬μΈν°λ₯Ό λ°ννλ©° μ€λ₯ μ NULLμ λ°ννλ€.
ASYNC_WAIT_CTX_set_wait_fd()
, ASYNC_WAIT_CTX_get_fd()
, ASYNC_WAIT_CTX_get_all_fds()
, ASYNC_WAIT_CTX_get_changed_fds()
, ASYNC_WAIT_CTX_clear_fd()
λ λͺ¨λ μ±κ³΅ μ 1μ λ°ννκ³ μ€λ₯ μ 0μ λ°ννλ€.
μλμ° νλ«νΌμμλ openssl/async.h
ν€λμ νμν λͺ κ°μ§ νμ
λ€μ΄ λ³΄ν΅ windows.h
λ₯Ό ν¬ν¨μμΌμΌ μ¬μ© κ°λ₯ν΄μ§λ€. κ·Έλ°λ° κ°μ₯ λ¨Όμ ν¬ν¨μν€λ ν€λλ€ μ€ νλμΈ windows.h
λ₯Ό μΈμ ν¬ν¨μν¬μ§λ₯Ό μμ© κ°λ°μκ° ν΅μ ν μ μμ΄μΌ νλ κ²½μ°κ° λ§λ€. λ°λΌμ async.h
μ μμ windows.h
λ₯Ό ν¬ν¨μν€λ κ²μ μμ© κ°λ°μμ μ±
μμΌλ‘ κ·μ νλ€.
crypto(7)
, ASYNC_start_job(3)
OpenSSL 1.1.0μμ ASYNC_WAIT_CTX_new()
, ASYNC_WAIT_CTX_free()
, ASYNC_WAIT_CTX_set_wait_fd()
, ASYNC_WAIT_CTX_get_fd()
, ASYNC_WAIT_CTX_get_all_fds()
, ASYNC_WAIT_CTX_get_changed_fds()
, ASYNC_WAIT_CTX_clear_fd()
κ° μ²μ μΆκ°λμλ€.
Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.
2017-12-31