Dreamine.Secs.Com
Dreamine.Secs.Com은 Dreamine 자체 SECS-II / HSMS 1차 통신 구현입니다.
구현 범위
- 정확한 Big Endian 숫자 폭, 중첩 List, 빈 값/다중 값, 완전 소비, Message/깊이/List 개수 제한을 지원하는 네트워크 독립 SECS-II item codec
- 4바이트 길이 접두사와 10바이트 Header, 부분/연속 frame 및 T8 stream 읽기를 지원하는 HSMS 전용 codec
- Select, Deselect, Linktest, Reject, Separate, 동시 Select와 잘못된 상태를 처리하는 명시적
NotConnected/ConnectedNotSelected/Selected상태 머신 - 세션별 thread-safe System Bytes와 T3, 취소, 중복 검출, 연결 정리를 포함한 동시 Primary/Secondary 상관관계
TimeProvider를 주입하는 T5 재연결, T6 Control Transaction, T7 미선택 종료, T8 바이트 간 통신 실패- 외부 장비가 필요 없는 단일-session Active/Passive TCP runtime, 공급자 합성, 제한된 진단, loopback 테스트
- Session까지 전달되는 Frame/Message/깊이/List 제한, Control Header 검증, 직렬 송신, application callback 예외 격리, 개별 transaction 실패 정리
- 실제로 읽거나 기록한 완전한 송수신 wire frame의 opt-in bounded observation, 연결 epoch, drop 계수 및 capture truncation
- 완전한 Header를 확보한 경우 Decode 실패와 진단에 선택적으로 제공되는 typed HSMS Header 문맥
- System Bytes 자동 할당 W0/W1 송신, typed identity/state event 및 정상 dialogue 상관관계를 제공하는 추가 provider-neutral
ISecsMessageSession/ISecsMessageSessionProvider지원 - exact-before-fallback ownership, 고정 worker, 명시적 drop 계수 및 source/epoch에 결합된 one-shot 응답을 제공하는 bounded 비동기 inbound Primary dispatcher
적용 Revision/조항과 보류 범위는 docs/SEMI_REQUIREMENTS_TRACE.md에 기록했습니다.
공개 샘플과 재사용 Runtime
Active Host와 Passive Equipment 샘플은 위 provider-neutral API와 재사용 가능한 Dreamine.SecsGem.Interop.Runtime 계층을 사용합니다. 기본값은 loopback port 7000, 0이 아닌 Session ID 7, 제한된 연결 2회, 전체 실행 timeout 120초입니다. --once를 지정하면 연결을 1회만 실행합니다.
샘플은 --profile, --template과 --template-name, --scenario, --log-directory도 받습니다. 저장소의 version-1 fixture는 0이 아닌 Session ID, 샘플 전용 W0 Template, 제한 시간 안의 Connect/Select/Linktest 실행, 지속형 Header-Only JSONL 로그를 보여 줍니다. QUICKSTART_KO.md와 fixture 안내를 참고하십시오.
Canonical full workspace 안에서는 sample project가 Dreamine.SecsGem.Interop.Runtime source를 의도적으로 ProjectReference합니다. 게시된 Dreamine.Secs.Com package에는 HSMS runtime이 포함되며 해당 Demo/Workbench project는 포함되지 않습니다. 과거 로컬 1.0.0 산출물에서 게시 package 세트로 전환할 때는 깨끗한 package cache를 사용하십시오.
Transport 결정
범용 Communication 길이 codec은 접두사 형태는 같지만 HSMS Header 검증, 증분 다중 frame, T8을 제공하지 않습니다. sealed 범용 TCP 서버도 선택된 단일 세션과 응답 대상 지정에 필요한 연결별 원시 Stream을 노출하지 않습니다. 따라서 기존 연결 생명주기는 구현하되 Communication public API는 변경하지 않고 SECS 경계 내부에 작은 HSMS 전용 TCP channel을 두었습니다.
Wire 증거 경계
HsmsSessionOptions.WireObservation을 설정하지 않으면 wire observation은 비활성입니다. 활성화하면 HsmsSession은 IHsmsWireObservationSource를 통해 하나의 pull reader를 노출하며 protocol 처리는 reader를 기다리지 않습니다. Outbound observation은 Stream에 기록한 encoded byte를, inbound observation은 decode 전에 읽은 완전한 byte를 사용하므로 canonical 재인코딩을 capture된 wire data로 표시하지 않습니다. CapturedBytes는 잘릴 수 있고 sequence 번호의 공백은 queue drop을 뜻하며 부분 Frame은 observation이 아닙니다. Raw Frame에는 민감한 application payload가 포함될 수 있으므로 application data policy에 맞춰 보호·보존·내보내야 합니다.
진단과 로컬 재인코딩 메시지는 문제 분석에 유용하지만 wire observation 또는 외부 counterpart 증거를 대신하지 않습니다.
Session 및 dispatcher 경계
기존 ISecsConnection, ISecsCommunicationProvider, CreateConnection 계약은 변경하지 않았습니다. Typed message session/provider 계약과 CreateSession은 추가 API입니다. exact S/F 등록, fallback, legacy MessageReceived event 순서로 claim합니다. exact W-bit 불일치도 claim하지만 응답할 수 없습니다. Bounded FIFO가 가득 찼거나 종료 중이면 이미 claim한 newest Primary를 drop하고 계수하며 다른 경로로 넘기지 않습니다. 첫 응답 시도는 성공, 실패, 취소와 관계없이 ownership을 소비하고, 허용된 응답은 source session, Session ID, Stream, System Bytes, 선언된 정상 Secondary 및 connection epoch에 결합됩니다.
Provider는 session 생성 시 endpoint, mode, Session ID, role, timer, limit, AutoReconnect, dispatcher 및 wire observation 설정을 복제하고 검증합니다. 이 설정은 live mutable하지 않으므로 변경 시 새 session을 생성합니다. Profile 계층은 validate → diff → recreate 순서로 변경을 적용합니다. 호출별 cancellation은 현재 작업에만 적용합니다. Role은 상위 application/responder policy이며 HSMS 상태 머신이나 Active/Passive TCP 방향을 바꾸지 않습니다.
Primary에는 일반 재시도 정책이 없습니다. Active 재연결 시도는 T5로 분리하고 Passive 연결이 닫히면 추가 backoff 없이 즉시 listen을 재개합니다.
의존성 경계
Dreamine.Secs.Com
-> Dreamine.Secs.Abstractions
-> Dreamine.Communication.Abstractions
-> Dreamine.Communication.Core
-> Dreamine.Communication.Sockets
로컬 E37.1 규범 문서를 확보하지 못했으므로 E37.1 적합성 주장은 BLOCKED_STANDARD입니다. 외부 Simulator 및 현장 검증은 NOT_RUN입니다. Legacy SECS-I, SML, 인증 및 최신 Revision 적합성 주장은 이 package 경계에서 INTENTIONALLY_EXCLUDED입니다. GEM, GEM300, WPF Monitoring 및 지속형 Workbench 기능은 별도 package 범위이며 Core의 evidence 상태를 바꾸지 않습니다.
라이선스
MIT.
구조 다이어그램
flowchart LR
App["Application"] --> Session["HsmsSession"]
Session --> State["HsmsStateMachine"]
Session --> Tx["Transaction managers"]
Session --> Codec["HSMS + SECS-II codecs"]
Session --> Contracts["Dreamine.Secs.Abstractions"]
Session --> Communication["Communication lifecycle contracts"]
Session --> Tcp["HSMS-specific TCP channel"]API 문서
타입
\if KO Dreamine 자체 HSMS-SS 연결을 공급자 계약에 연결합니다. \endif \if EN Connects the native Dreamine HSMS-SS session to the provider contract. \endif
\if KO Select/Deselect/Linktest 제어 transaction과 T6를 관리합니다. \endif \if EN Manages Select, Deselect, and Linktest control transactions with T6. \endif
\if KO E37-0413 §8의 길이 접두사와 10바이트 헤더를 변환합니다. \endif \if EN Converts the E37-0413 §8 length prefix and ten-byte header. \endif
\if KO HSMS frame codec의 크기 제한입니다. \endif \if EN Configures HSMS frame-codec size limits. \endif
\if KO 수신 HSMS 메시지의 상태 머신 처리 결과입니다. \endif \if EN Represents the state-machine result of an inbound HSMS message. \endif
\if KO 단일 HSMS Active 또는 Passive TCP 세션을 합성으로 구현합니다. \endif \if EN Implements one active or passive HSMS TCP session through composition. \endif
\if KO E37-0413 §5와 §7의 단일 세션 상태 전이를 직렬화합니다. \endif \if EN Serializes the single-session state transitions from E37-0413 §§5 and 7. \endif
\if KO 임의로 분할되거나 연속된 입력에서 완전한 HSMS frame을 추출합니다. \endif \if EN Extracts complete HSMS frames from arbitrarily split or concatenated input. \endif
\if KO TimeProvider로 HSMS 타이머를 결정론적으로 예약합니다. \endif \if EN Schedules HSMS timers deterministically through TimeProvider. \endif
\if KO 진단을 폐기하는 기본 sink입니다. \endif \if EN Default sink that discards diagnostics. \endif
\if KO Primary dispatcher의 claim 결과입니다. \endif \if EN Identifies a Primary dispatcher claim result. \endif
\if KO Dreamine 자체 SECS 구현 어셈블리를 검색하거나 등록할 때 사용하는 표식입니다. \endif \if EN Marks the assembly boundary used to discover or register the Dreamine native SECS implementation. \endif
\if KO E5-0813 §9 item wire format을 구현하는 순수 codec입니다. \endif \if EN Implements the E5-0813 §9 item wire format without network dependencies. \endif
\if KO SECS-II item codec의 방어 한계를 설정합니다. \endif \if EN Configures defensive limits for the SECS-II item codec. \endif
\if KO 고정 worker와 bounded queue로 inbound Primary를 exact/fallback handler에 전달합니다. \endif \if EN Routes inbound primaries to exact/fallback handlers using fixed workers and a bounded queue. \endif
\if KO 기존 진단 sink와 provider-neutral typed 진단 이벤트를 하나의 안전한 경계로 결합합니다. \endif \if EN Combines the legacy diagnostic sink and provider-neutral typed diagnostic event behind one safe boundary. \endif
\if KO 세션 범위에서 원자적으로 순환하는 System Bytes를 생성합니다. \endif \if EN Generates atomically wrapping System Bytes within a session. \endif
\if KO Secondary 상관관계 처리 결과입니다. \endif \if EN Identifies the result of secondary-message correlation. \endif
\if KO 세션별 SECS transaction과 T3 수명을 thread-safe하게 관리합니다. \endif \if EN Manages session-scoped SECS transactions and T3 lifetimes safely across threads. \endif
DreamineSecsCommunicationProvider
\if KO 기본 localhost:5000 HSMS 설정으로 공급자를 만듭니다. \endif \if EN Creates a provider using default localhost:5000 HSMS settings. \endif
\if KO 애플리케이션 설정 mapping, 시간 및 진단 경계로 공급자를 만듭니다. \endif \if EN Creates a provider with application option mapping, time, and diagnostics boundaries. \endif
optionsFactory— \if KO HSMS 설정 mapping입니다. \endif \if EN HSMS settings mapper. \endiftimeProvider— \if KO 시간 공급자입니다. \endif \if EN Time provider. \endifdiagnostics— \if KO 진단 sink입니다. \endif \if EN Diagnostic sink. \endifHsmsControlTransactionManager
\if KO 시간 공급자와 진단 sink로 manager를 만듭니다. \endif \if EN Creates a manager with a time provider and diagnostic sink. \endif
timeProvider— \if KO 시간 공급자입니다. \endif \if EN Time provider. \endifdiagnostics— \if KO 진단 sink입니다. \endif \if EN Diagnostic sink. \endif\if KO 연결 오류로 모든 제어 대기를 종료합니다. \endif \if EN Terminates every control waiter with a connection error. \endif
error— \if KO 오류입니다. \endif \if EN Error. \endif\if KO manager를 안전하게 해제합니다. \endif \if EN Safely disposes the manager. \endif
\if KO 응답이 필요한 제어 요청을 등록합니다. \endif \if EN Registers a control request requiring a response. \endif
request— \if KO 요청입니다. \endif \if EN Request. \endift6— \if KO T6입니다. \endif \if EN T6. \endifcancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif반환: \if KO 상관된 응답입니다. \endif \if EN Correlated response. \endif
\if KO 특정 제어 transaction만 오류로 종료합니다. \endif \if EN Terminates only the specified control transaction with an error. \endif
systemBytes— \if KO 종료할 System Bytes입니다. \endif \if EN System Bytes to terminate. \endiferror— \if KO 전달할 오류입니다. \endif \if EN Error to deliver. \endif반환: \if KO transaction을 제거했는지 여부입니다. \endif \if EN Whether a transaction was removed. \endif
\if KO 수신 제어 응답으로 transaction 완료를 시도합니다. \endif \if EN Attempts to complete a transaction with an inbound control response. \endif
response— \if KO 응답입니다. \endif \if EN Response. \endif반환: \if KO 완료 여부입니다. \endif \if EN Whether completion succeeded. \endif
\if KO 열린 제어 transaction 수입니다. \endif \if EN Gets the open control-transaction count. \endif
HsmsFrameCodec
\if KO 기본 제한으로 codec을 만듭니다. \endif \if EN Creates a codec with default limits. \endif
\if KO 지정한 frame 및 item 설정으로 codec을 만듭니다. \endif \if EN Creates a codec with specified frame and item settings. \endif
options— \if KO frame 설정입니다. \endif \if EN Frame settings. \endifitemCodec— \if KO SECS-II item codec입니다. \endif \if EN SECS-II item codec. \endif\if KO 접두사를 포함한 완전한 단일 frame을 디코딩합니다. \endif \if EN Decodes one complete frame including its prefix. \endif
frame— \if KO frame입니다. \endif \if EN Frame. \endif반환: \if KO 메시지입니다. \endif \if EN Message. \endif
\if KO 메시지를 접두사를 포함한 완전한 frame으로 인코딩합니다. \endif \if EN Encodes a message as a complete frame including its prefix. \endif
message— \if KO 메시지입니다. \endif \if EN Message. \endif반환: \if KO frame byte입니다. \endif \if EN Frame bytes. \endif
\if KO T8을 적용해 Stream에서 한 frame을 읽습니다. 첫 바이트 전 EOF는 null입니다. \endif \if EN Reads one frame with T8 enforcement; EOF before the first byte returns null. \endif
stream— \if KO 원본 stream입니다. \endif \if EN Source stream. \endift8— \if KO 바이트 간 제한 시간입니다. \endif \if EN Inter-character timeout. \endiftimeProvider— \if KO 시간 공급자입니다. \endif \if EN Time provider. \endifcancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif반환: \if KO 메시지 또는 EOF의 null입니다. \endif \if EN Message or null at EOF. \endif
\if KO Stream에 frame을 비동기 기록합니다. \endif \if EN Asynchronously writes a frame to a stream. \endif
stream— \if KO 대상 stream입니다. \endif \if EN Destination stream. \endifmessage— \if KO 메시지입니다. \endif \if EN Message. \endifcancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif\if KO 최대 frame 길이를 가져옵니다. \endif \if EN Gets the maximum frame length. \endif
\if KO HSMS 헤더 크기입니다. \endif \if EN The HSMS header size. \endif
\if KO HSMS 길이 접두사 크기입니다. \endif \if EN The HSMS length-prefix size. \endif
HsmsFrameCodecOptions
\if KO 설정을 검증합니다. \endif \if EN Validates the setting. \endif
\if KO 길이 접두사가 나타내는 최대 바이트 수입니다. \endif \if EN Gets the maximum byte count represented by the length prefix. \endif
HsmsProcessingResult
\if KO 처리 결과를 만듭니다. \endif \if EN Creates a processing result. \endif
accepted— \if KO 상위 계층 전달 여부입니다. \endif \if EN Whether the message is accepted for upper layers. \endifresponse— \if KO 선택적 자동 응답입니다. \endif \if EN Optional automatic response. \endifcloseConnection— \if KO 연결 종료 여부입니다. \endif \if EN Whether to close the connection. \endif\if KO 상위 계층 전달 여부입니다. \endif \if EN Gets whether the message is accepted. \endif
\if KO 처리 후 TCP 종료 여부입니다. \endif \if EN Gets whether TCP should be closed after processing. \endif
\if KO 자동 응답입니다. \endif \if EN Gets the automatic response. \endif
HsmsSession
\if KO 설정, 시간 및 진단 경계로 세션을 만듭니다. \endif \if EN Creates a session with settings, time, and diagnostic boundaries. \endif
options— \if KO 세션 설정입니다. \endif \if EN Session settings. \endiftimeProvider— \if KO 시간 공급자입니다. \endif \if EN Time provider. \endifdiagnostics— \if KO 진단 sink입니다. \endif \if EN Diagnostic sink. \endif\if KO 열린 transaction과 충돌하지 않는 System Bytes를 할당합니다. \endif \if EN Allocates System Bytes not colliding with an open transaction. \endif
\if KO Deselect transaction을 수행합니다. \endif \if EN Performs a Deselect transaction. \endif
cancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif\if KO 세션과 모든 비동기 자원을 안전하게 해제합니다. \endif \if EN Safely disposes the session and all asynchronous resources. \endif
\if KO Linktest transaction을 수행합니다. \endif \if EN Performs a Linktest transaction. \endif
cancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif\if KO Select transaction을 수행하고 선택 상태가 될 때까지 기다립니다. \endif \if EN Performs a Select transaction and waits until selected. \endif
cancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif\if KO 선택된 세션에서 응답을 기다리지 않는 SECS 메시지를 보냅니다. \endif \if EN Sends a SECS message without waiting for a reply in a selected session. \endif
message— \if KO 메시지입니다. \endif \if EN Message. \endifcancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif\if KO W-bit primary를 보내고 T3 내의 secondary를 기다립니다. \endif \if EN Sends a W-bit primary and waits for its secondary within T3. \endif
message— \if KO primary입니다. \endif \if EN Primary. \endifcancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif반환: \if KO secondary입니다. \endif \if EN Secondary. \endif
\if KO Separate.req를 전송하고 TCP 연결을 종료합니다. \endif \if EN Sends Separate.req and closes TCP. \endif
cancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endif\if KO 현재 HSMS protocol 상태입니다. \endif \if EN Gets the current HSMS protocol state. \endif
\if KO 선택된 세션에서 상위 계층으로 전달되는 SECS 메시지 이벤트입니다. \endif \if EN Raised for SECS messages accepted in a selected session. \endif
HsmsStateMachine
\if KO 선택적 진단 sink로 상태 머신을 만듭니다. \endif \if EN Creates a state machine with an optional diagnostic sink. \endif
diagnostics— \if KO 진단 sink입니다. \endif \if EN Diagnostic sink. \endif\if KO 현재 상태에서 Deselect.req를 만듭니다. \endif \if EN Creates Deselect.req in the current state. \endif
systemBytes— \if KO 시스템 바이트입니다. \endif \if EN System bytes. \endif반환: \if KO 제어 메시지입니다. \endif \if EN Control message. \endif
\if KO 연결된 상태에서 Linktest.req를 만듭니다. \endif \if EN Creates Linktest.req while connected. \endif
systemBytes— \if KO 시스템 바이트입니다. \endif \if EN System bytes. \endif반환: \if KO 제어 메시지입니다. \endif \if EN Control message. \endif
\if KO 현재 상태에서 Select.req를 만듭니다. \endif \if EN Creates Select.req in the current state. \endif
systemBytes— \if KO 시스템 바이트입니다. \endif \if EN System bytes. \endif반환: \if KO 제어 메시지입니다. \endif \if EN Control message. \endif
\if KO 선택 상태에서 Separate.req를 만들고 미선택 상태로 이동합니다. \endif \if EN Creates Separate.req while selected and moves to not selected. \endif
systemBytes— \if KO 시스템 바이트입니다. \endif \if EN System bytes. \endif반환: \if KO 제어 메시지입니다. \endif \if EN Control message. \endif
\if KO TCP 연결 설정을 반영합니다. \endif \if EN Applies TCP establishment. \endif
\if KO TCP 연결 종료를 반영합니다. \endif \if EN Applies TCP termination. \endif
\if KO 수신 메시지를 현재 상태에 적용합니다. \endif \if EN Applies an inbound message to the current state. \endif
message— \if KO 수신 메시지입니다. \endif \if EN Inbound message. \endif반환: \if KO 처리 결과입니다. \endif \if EN Processing result. \endif
\if KO 현재 명시적 상태입니다. \endif \if EN Gets the current explicit state. \endif
HsmsStreamDecoder
\if KO 지정한 frame codec으로 decoder를 만듭니다. \endif \if EN Creates a decoder with the specified frame codec. \endif
codec— \if KO frame codec입니다. \endif \if EN Frame codec. \endif\if KO 입력 조각을 추가하고 완성된 모든 메시지를 반환합니다. \endif \if EN Appends a chunk and returns every completed message. \endif
data— \if KO 입력 조각입니다. \endif \if EN Input chunk. \endif반환: \if KO 완성된 메시지입니다. \endif \if EN Completed messages. \endif
\if KO 입력 종료를 표시하고 불완전 frame을 검출합니다. \endif \if EN Marks end of input and detects an incomplete frame. \endif
\if KO 보류 중인 입력을 폐기합니다. \endif \if EN Discards buffered input. \endif
\if KO 현재 보류 중인 바이트 수입니다. \endif \if EN Gets the number of currently buffered bytes. \endif
HsmsTimerScheduler
\if KO 설정과 시간 공급자로 scheduler를 만듭니다. \endif \if EN Creates a scheduler with options and a time provider. \endif
options— \if KO 타이머 설정입니다. \endif \if EN Timer settings. \endiftimeProvider— \if KO 시간 공급자입니다. \endif \if EN Time provider. \endif\if KO 타이머의 설정 기간을 가져옵니다. \endif \if EN Gets the configured duration of a timer. \endif
kind— \if KO 타이머입니다. \endif \if EN Timer. \endif반환: \if KO 기간입니다. \endif \if EN Duration. \endif
\if KO 취소되거나 만료될 때까지 기다리고 만료 예외를 발생시킵니다. \endif \if EN Waits until cancellation or expiration and throws on expiration. \endif
kind— \if KO 타이머입니다. \endif \if EN Timer. \endifcancellationToken— \if KO 취소 토큰입니다. \endif \if EN Cancellation token. \endifNullSecsDiagnosticSink
\if KO 공유 인스턴스입니다. \endif \if EN Gets the shared instance. \endif
SecsItemCodec
\if KO 기본 제한으로 codec을 만듭니다. \endif \if EN Creates a codec with default limits. \endif
\if KO 지정한 방어 한계로 codec을 만듭니다. \endif \if EN Creates a codec with specified defensive limits. \endif
options— \if KO 제한 설정입니다. \endif \if EN Limit settings. \endifSecsItemCodecOptions
\if KO 설정을 검증합니다. \endif \if EN Validates the settings. \endif
\if KO 단일 List에서 허용할 최대 자식 수입니다. \endif \if EN Gets the maximum child count permitted in one List item. \endif
\if KO 최대 인코딩/디코딩 바이트 수입니다. \endif \if EN Gets the maximum encoded or decoded byte count. \endif
\if KO 허용할 최대 목록 중첩 깊이입니다. \endif \if EN Gets the maximum permitted list nesting depth. \endif
SecsPrimaryDispatcher
\if KO dispatcher 설정 및 진단 경계로 instance를 만듭니다. \endif \if EN Creates an instance with dispatcher settings and a diagnostic boundary. \endif
\if KO future claim을 중지하고 worker drain을 기다립니다. worker 내부 재진입은 자신을 기다리지 않습니다. \endif \if EN Stops future claims and waits for worker drain; worker reentrancy never waits on itself. \endif
\if KO exact 우선, fallback 차선으로 Primary를 claim합니다. 포화 시에도 claim은 유지됩니다. \endif \if EN Claims a primary using exact-first, fallback-second routing. A full queue still retains the claim. \endif
\if KO queue 포화 또는 정지 중 claim된 뒤 버려진 Primary 수입니다. \endif \if EN Gets the number of claimed primaries dropped because the queue was full or stopping. \endif
SecsSessionDiagnosticHub
\if KO 기존 진단 sink와 provider-neutral typed 진단 이벤트를 하나의 안전한 경계로 결합합니다. \endif \if EN Combines the legacy diagnostic sink and provider-neutral typed diagnostic event behind one safe boundary. \endif
\if KO 각 외부 callback 실패를 격리하여 진단을 전달합니다. \endif \if EN Delivers a diagnostic while isolating every external callback failure. \endif
\if KO typed 진단 구독입니다. \endif \if EN Typed diagnostic subscription. \endif
SecsSystemBytesGenerator
\if KO 초기값 다음 수부터 생성하도록 generator를 만듭니다. \endif \if EN Creates a generator that returns the value after the seed first. \endif
seed— \if KO 초기값입니다. \endif \if EN Initial value. \endif\if KO 다음 32비트 값을 원자적으로 가져옵니다. \endif \if EN Atomically gets the next 32-bit value. \endif
SecsTransactionCompletionStatus
\if KO 열린 transaction을 완료했습니다. \endif \if EN An open transaction was completed. \endif
\if KO 최근 완료된 응답의 중복입니다. \endif \if EN The response duplicates a recently completed transaction. \endif
\if KO Session/Stream/Function 상관관계가 맞지 않습니다. \endif \if EN Session/Stream/Function correlation does not match. \endif
\if KO System Bytes를 알 수 없습니다. \endif \if EN System Bytes are unknown. \endif
SecsTransactionManager
\if KO manager를 만듭니다. \endif \if EN Creates a manager. \endif
timeProvider— \if KO 결정론적 시간 공급자입니다. \endif \if EN Deterministic time provider. \endifgenerator— \if KO System Bytes generator입니다. \endif \if EN System Bytes generator. \endifdiagnostics— \if KO 진단 sink입니다. \endif \if EN Diagnostic sink. \endifrecentCapacity— \if KO 중복 검출 보관 수입니다. \endif \if EN Recent-completion capacity. \endif\if KO 연결 종료 오류로 모든 대기를 정리합니다. \endif \if EN Completes all waiters with a connection-termination error. \endif
error— \if KO 전달할 오류입니다. \endif \if EN Error to deliver. \endif\if KO 열린/최근 완료 값과 충돌하지 않는 다음 System Bytes를 할당합니다. \endif \if EN Allocates the next System Bytes not colliding with open or recent transactions. \endif
\if KO 모든 대기를 취소하고 manager를 해제합니다. \endif \if EN Cancels all waiters and disposes the manager. \endif
\if KO W-bit primary를 등록하고 Secondary 또는 T3/취소를 기다립니다. \endif \if EN Registers a W-bit primary and waits for its secondary, T3, or cancellation. \endif
primary— \if KO primary 메시지입니다. \endif \if EN Primary message. \endift3— \if KO T3 기간입니다. \endif \if EN T3 duration. \endifcancellationToken— \if KO 호출자 취소입니다. \endif \if EN Caller cancellation. \endif반환: \if KO 상관된 secondary입니다. \endif \if EN Correlated secondary. \endif
\if KO 선언된 인접 정상 Secondary만 허용하는 provider-neutral W1 transaction을 등록합니다. \endif \if EN Registers a provider-neutral W1 transaction that accepts only its declared adjacent normal secondary. \endif
\if KO 특정 transaction만 오류로 종료합니다. \endif \if EN Terminates only the specified transaction with an error. \endif
systemBytes— \if KO 종료할 System Bytes입니다. \endif \if EN System Bytes to terminate. \endiferror— \if KO 전달할 오류입니다. \endif \if EN Error to deliver. \endif반환: \if KO transaction을 제거했는지 여부입니다. \endif \if EN Whether a transaction was removed. \endif
\if KO 수신 Secondary로 열린 transaction을 완료합니다. \endif \if EN Completes an open transaction with an inbound secondary. \endif
secondary— \if KO secondary 메시지입니다. \endif \if EN Secondary message. \endif반환: \if KO 상관관계 결과입니다. \endif \if EN Correlation result. \endif
\if KO 현재 열린 transaction 수입니다. \endif \if EN Gets the current open-transaction count. \endif