> For the complete documentation index, see [llms.txt](https://docs.medcrypt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.medcrypt.com/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-session.md).

# medcrypt::guardian::Session

의 개별 연결 [서비스](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-service.md).

`#include <Session.h>`

## 공개 함수

|                                                                                                       | 이름                                                                                                                                                                                                                                                                                                                           |
| ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|                                                                                                       | <p><a href="#function-~session"><strong>\~Session</strong></a>()<br>소멸자입니다.</p>                                                                                                                                                                                                                                              |
| bool                                                                                                  | <p><a href="#function-isready"><strong>IsReady</strong></a>()<br>기반 채널과 전송 계층이 작동할 준비가 되었는지 확인합니다.</p>                                                                                                                                                                                                                       |
| bool                                                                                                  | <p><a href="#function-isfailed"><strong>IsFailed</strong></a>()<br>기반 전송 계층 또는 채널에 장애가 발생했는지 확인합니다.</p>                                                                                                                                                                                                                      |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-findchannel"><strong>FindChannel</strong></a>(const char <em>in\_channel\_name, std::unique\_ptr<</em> <a href="/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-channelguard.md"><em>ChannelGuard</em></a> <em>></em> out\_channelguard)<br>제공된 이름을 기준으로 세션 채널 인스턴스를 검색합니다.</p> |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-shutdown"><strong>Shutdown</strong></a>(const bool & in\_force =false)<br>포함된 연결과 ChannelGuard를 중지하여 추가 데이터가 전송 대기열에 들어가지 못하도록 합니다.</p>                                                                                                                                                                |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-dataforsocket"><strong>DataForSocket</strong></a>(char <em>out\_data, size\_t</em> io\_data\_size)<br>고객이 관리하는 전송 계층을 통해 보낼 데이터를 제공합니다(블로킹).</p>                                                                                                                                                       |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-asyncdataforsocket"><strong>AsyncDataForSocket</strong></a>(char <em>out\_data, size\_t</em> io\_data\_size)<br>고객이 관리하는 전송 계층을 통해 보낼 데이터를 제공합니다(논블로킹).</p>                                                                                                                                            |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-datafromsocket"><strong>DataFromSocket</strong></a>(const char \* in\_data, size\_t in\_data\_size)<br>고객이 관리하는 전송 계층에서 처리할 데이터를 받습니다(블로킹).</p>                                                                                                                                                        |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-asyncdatafromsocket"><strong>AsyncDataFromSocket</strong></a>(const char \* in\_data, size\_t in\_data\_size)<br>고객이 관리하는 전송 계층에서 처리할 데이터를 받습니다(논블로킹).</p>                                                                                                                                             |
| bool                                                                                                  | <p><a href="#function-isdatagone"><strong>IsDataGone</strong></a>()<br>세션에 전송 대기 중인 데이터가 있는지 나타냅니다.</p>                                                                                                                                                                                                                      |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-setdataforsocketcallback"><strong>SetDataForSocketCallback</strong></a>(const std::function< bool(const char \*, const size\_t &)> & in\_callback)<br>사용자가 관리하는 전송 계층을 통해 데이터를 보내는 콜백을 등록합니다.</p>                                                                                                      |
| [상태](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status) | <p><a href="#function-setdatafromsocketcallback"><strong>SetDataFromSocketCallback</strong></a>(const std::function< bool(char <em>\*, size\_t</em> )> & in\_callback)<br>사용자가 관리하는 전송 계층에서 데이터를 받는 콜백을 등록합니다.</p>                                                                                                           |

## 공개 함수 문서

### 함수 \~Session

```cpp
~Session()
```

소멸자입니다.

**매개변수**:

* **없음**

**반환값**: 없음

소멸자는 내부 [Guardian](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md) 표현에 영향을 주지 않습니다. [Session](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-session.md).

### 함수 IsReady

```cpp
bool IsReady()
```

기반 채널과 전송 계층이 작동할 준비가 되었는지 확인합니다.

**매개변수**:

* **없음**

**반환값**:

* **true** 세션과 포함된 채널이 데이터를 송수신할 준비가 되었습니다
* **false** 세션과 포함된 채널이 데이터를 송수신할 준비가 되지 않았습니다

**반환값**: bool

세션이 준비되면 포함된 연결 전송 메커니즘을 통해 포함된 모든 채널에서 데이터를 송수신할 수 있습니다.

세션이 준비되지 않은 경우에도 이미 수신 및 처리된 데이터는 ChannelGuards를 통해 계속 가져올 수 있습니다.

### 함수 IsFailed

```cpp
bool IsFailed()
```

기본 전송 또는 채널에 오류가 발생했는지 확인합니다.

**매개변수**:

* **없음**

**반환값**:

* **true** 오류가 발생하여 이후 송수신 작업이 차단된 경우
* **false** 오류가 발생하지 않은 경우

**반환값**: bool

세션에 오류가 발생한 경우 세션을 종료한 후 Start로 다시 생성해야 합니다.

세션에 오류가 발생한 경우에도 이미 수신 및 처리된 데이터는 ChannelGuards를 통해 계속 가져올 수 있습니다.

### 함수 FindChannel

```cpp
Status FindChannel(
    const char * in_channel_name,
    std::unique_ptr< ChannelGuard > * out_channelguard
)
```

지정된 이름을 기준으로 세션 채널 인스턴스를 검색합니다.

**매개변수**:

* **in\_channel\_name** 널 종료된 채널 이름
* **out\_channelguard** 찾은 channelguard를 저장할 unique\_ptr 저장 공간의 포인터

**반환값**:

* **OK** out\_channelguard의 포인터가 유효합니다
* **FAIL** in\_channel\_name으로 지정된 channelguard를 찾을 수 없습니다
* **BADPARAM** in\_channel\_name이 nullptr이거나 비어 있거나 out\_channelguard가 nullptr입니다

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

로드된 프로필을 사용하여 제공된 전송에 대해 관리되지 않는 서비스 구성을 기반으로 보안을 적용하거나 인증을 활성화합니다.

### 함수 Shutdown

```cpp
Status Shutdown(
    const bool & in_force =false
)
```

포함된 연결과 channelguard를 중지하고, 이후 데이터가 전송 대기열에 추가되지 않도록 차단합니다.

**매개변수**:

* **in\_force** 시간 초과 후(또는 시간 초과가 0인 경우 즉시) 대기 중인 모든 데이터를 버리고 종료합니다.

**반환값**:

* **OK** 세션이 종료되었습니다
* **FAIL** 일반 오류입니다. 로그를 확인하세요.
* **AGAIN** 하나 이상의 전송에 전송 대기 중인 데이터가 있습니다

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

CreateTask를 통해 다른 스레드에 배치되었거나 부모가 다른 스레드에 배치된 경우를 포함하여, 포함된 모든 channelguard와 전송을 포함합니다.

### 함수 DataForSocket

```cpp
Status DataForSocket(
    char * out_data,
    size_t * io_data_size
)
```

사용자가 관리하는 전송을 통해 보낼 데이터를 제공합니다(블로킹).

**매개변수**:

* **out\_data** 출력 데이터를 저장할 바이너리 데이터 버퍼
* **io\_data\_size** out\_data 버퍼에 할당된 크기를 제공해야 합니다. 성공적으로 반환되면 out\_data의 데이터 크기로 설정되고, 실패하면 0으로 설정됩니다.

**반환값**:

* **OK** 전송할 데이터가 out\_data에 채워집니다.
* **FAIL** 일반 오류입니다. 로그를 확인하세요.
* **BADPARAM** out\_data가 nullptr이거나 io\_data\_size가 nullptr 또는 0입니다.
* **DENIED** 세션이 관리형입니다.
* **OUTOFMEMORY** 제공된 버퍼가 너무 작습니다.

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

차단 호출은 관리되지 않는 서비스 세션에만 적용됩니다. out\_data는 사용자 관리 전송을 통해 보낼 데이터를 저장하기 위해 사용자가 할당한 버퍼여야 합니다. 아래 오류 조건 중 하나라도 해당하면 호출은 즉시 반환하며, 그렇지 않으면 전송할 데이터가 준비될 때까지 차단됩니다.

### 함수 AsyncDataForSocket

```cpp
Status AsyncDataForSocket(
    char * out_data,
    size_t * io_data_size
)
```

고객 관리 전송을 통해 보낼 데이터를 제공합니다(비차단).

**매개변수**:

* **out\_data** 출력 데이터를 저장할 바이너리 데이터 버퍼
* **io\_data\_size** out\_data 버퍼에 할당된 크기를 제공해야 합니다. 성공적으로 반환되면 out\_data의 데이터 크기로 설정되고, 실패하면 0으로 설정됩니다.

**반환값**:

* **OK** 전송할 데이터가 out\_data에 채워집니다.
* **FAIL** 일반 오류입니다. 로그를 확인하세요.
* **BADPARAM** out\_data가 nullptr이거나 io\_data\_size가 nullptr 또는 0입니다.
* **DENIED** 세션이 관리형입니다.
* **OUTOFMEMORY** 제공된 버퍼가 너무 작습니다.
* **AGAIN** 전송 대기 중인 데이터가 없으며 out\_data는 변경되지 않습니다.

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

비차단 호출은 관리되지 않는 서비스 세션에만 적용됩니다. out\_data는 사용자 관리 전송을 통해 보낼 데이터를 저장하기 위해 사용자가 할당한 버퍼여야 합니다.

### 함수 DataFromSocket

```cpp
Status DataFromSocket(
    const char * in_data,
    size_t in_data_size
)
```

고객 관리 전송에서 처리할 데이터를 받습니다(차단).

**매개변수**:

* **in\_data\_size** in\_data의 바이너리 데이터 크기
* **in\_data** 수신된 데이터의 바이너리 데이터 버퍼

**반환값**:

* **OK** in\_data가 처리되었습니다.
* **FAIL** in\_data를 처리할 수 없습니다.
* **DENIED** 세션이 관리형입니다.
* **OUTOFMEMORY** 제공된 버퍼가 전송하기에 너무 큽니다.

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

차단 호출은 관리되지 않는 서비스 세션에만 적용됩니다. in\_data에는 고객 관리 전송에서 수신한 정보가 포함되어야 합니다. 반환 시 channelguard에서 데이터를 가져올 수 있습니다.

### 함수 AsyncDataFromSocket

```cpp
Status AsyncDataFromSocket(
    const char * in_data,
    size_t in_data_size
)
```

고객 관리 전송에서 처리할 데이터를 받습니다(비차단).

**매개변수**:

* **in\_data\_size** in\_data의 바이너리 데이터 크기
* **in\_data** 수신된 데이터의 바이너리 데이터 버퍼

**반환값**:

* **OK** in\_data가 처리 대기열에 추가되었거나 처리되었습니다.
* **FAIL** in\_data를 처리할 수 없습니다.
* **DENIED** 세션이 관리형입니다.
* **OUTOFMEMORY** 제공된 버퍼가 너무 큽니다.

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

비차단 호출은 관리되지 않는 서비스 세션에만 적용됩니다. in\_data에는 고객 관리 전송에서 수신한 정보가 포함되어야 합니다. 반환 시 channelguard에서 데이터를 가져올 수 있습니다.

### 함수 IsDataGone

```cpp
bool IsDataGone()
```

세션에 전송 대기 중인 데이터가 있는지 나타냅니다.

**매개변수**:

* **없음**

**반환값**:

* **false** 전송 대기 중인 데이터가 있습니다.
* **true** 전송 대기 중인 데이터가 없습니다.

**반환값**: bool

false이면 포함된 관리형 전송을 통해 보내거나, 사용자 관리 전송으로 보내기 위해 \[Async]DataForSocket을 사용하여 가져올 데이터가 대기 중입니다. false이면 AsyncDataForSocket은 OK를 반환하고 DataForSocket은 차단되지 않습니다. 다중 스레드 환경에서는 IsDataGone 호출과 Shutdown 호출 사이에 추가 데이터가 전송 대기열에 추가될 수 있으므로, 강제 종료가 아닌 Shutdown 호출이 차단되는지 여부는 보장되지 않습니다.

### 함수 SetDataForSocketCallback

```cpp
Status SetDataForSocketCallback(
    const std::function< bool(const char *, const size_t &)> & in_callback
)
```

사용자 관리 전송을 통해 데이터를 전송하는 콜백을 등록합니다.

**매개변수**:

* **in\_callback** 호출되면 사용자 관리 전송을 통해 데이터를 전송하는 블로킹 함수이며, 실패하면 false를 반환합니다.

**반환값**:

* **OK** 콜백이 등록되었습니다
* **FAIL** 일반 오류
* **DENIED** 세션이 관리형입니다.

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

사용자 관리 전송에서 사용할 블로킹 콜백을 제공합니다. [ChannelGuard](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-channelguard.md) 호출합니다. 제공된 함수는 블로킹 호출이어야 하며, 데이터가 성공적으로 전송되거나 실패로 인해 전송할 수 없게 된 경우에만 반환해야 합니다.

### function SetDataFromSocketCallback

```cpp
Status SetDataFromSocketCallback(
    const std::function< bool(char **, size_t *)> & in_callback
)
```

사용자 관리 전송에서 데이터를 수신하는 콜백을 등록합니다.

**매개변수**:

* **in\_callback** 호출되면 사용자 관리 전송에서 데이터를 수신하는 블로킹 함수이며, 실패하면 false를 반환합니다.

**반환값**:

* **OK** 콜백이 등록되었습니다
* **FAIL** 일반 오류
* **DENIED** 세션이 관리형입니다.

**반환값**: [medcrypt::guardian::Status](/ko/guardian/api-overview/api-reference/namespaces/namespacemedcrypt-guardian.md#typedef-status)

사용자 관리 전송에서 사용할 블로킹 콜백을 제공합니다. [ChannelGuard](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-channelguard.md) 호출합니다. 제공된 함수는 블로킹 호출이어야 하며, 데이터가 성공적으로 수신되거나 실패로 인해 데이터를 수신할 수 없게 된 경우에만 반환해야 합니다. 콜백은 DataFromSocket의 size\_t 매개변수에 적용되는 것과 동일한 규칙을 따라야 합니다.

## 디버깅 및 로깅

Guardian은 로그 파일을 생성하지 않습니다. 대신 로깅은 애플리케이션에서 제어합니다.

* Guardian은 로그를 다음으로 출력합니다: `stdout` 및 `stderr`이러한 로그는 실행 중인 애플리케이션의 터미널/CLI에 표시됩니다. 출력에서 특정 오류 코드나 연결 실패를 확인하세요.
* **사용자 지정 로깅:** 다음을 사용하여 `SetLoggingCallback` 로그 메시지를 콜백 함수로 리디렉션할 수 있습니다. 이렇게 하면 터미널 출력이 중단되고 사용자 지정 로그 처리가 가능해집니다.
* **로그 제어:** 애플리케이션에서 로그 수준과 상세도를 제어할 수 있습니다.
* **Guardian Cloud UI**: Guardian Cloud 인터페이스에서 추가 오류 세부 정보와 프로비저닝 상태를 확인하세요.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.medcrypt.com/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-session.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
