PDComm.GemEquipmentWorker
클래스
전용 폴링 스레드에서 실행되며 비동기 명령을 제공하는 GEM 장비 끝점입니다.
public sealed class GemEquipmentWorker : GemWorker작업자는 자신의 스레드에서 GemEquipment를 만들고, 초기 상태 변수와 구성된 기능을 등록하고, 전송을 시작하며, 처리된 모든 이벤트를 GemWorker.ReadEventsAsync로 전달합니다. S1F1, S1F3, S1F11, S1F13, S1F15, S1F17 같은 표준 요청에는 자동으로 응답합니다. 애플리케이션의 결정이 필요한 1차 메시지에는 GemEquipmentWorker.RespondReportQueryAsync 같은 이 클래스의 기능 명령으로 응답합니다.
각 *Async 명령은 같은 이름의 동기 GemEquipment 메서드를 작업자 스레드에서 실행하도록 큐에 넣습니다. 큐잉, 백프레셔, 종료 규칙은 GemWorker를 참고합니다.
using SecsItem temperature = SecsItem.FromF4([21.5f], limits);
await using GemEquipmentWorker equipment = await GemEquipmentWorker.StartAsync(
"127.0.0.1:0", transportOptions, equipmentOptions, workerOptions,
[new GemStatusVariable(1, "Temperature", "C", temperature)], cancellationToken);
Console.WriteLine($"LISTEN {equipment.LocalAddress}");
await using IAsyncEnumerator<GemEvent> events =
equipment.ReadEventsAsync(cancellationToken).GetAsyncEnumerator();
bool communicated = false;
while (await events.MoveNextAsync())
{
using GemEvent current = events.Current;
if (current.ProcessingStatus != PdcommStatus.Ok)
throw new PdcommException(current.ProcessingStatus);
GemResultInfo? info = current.Result?.GetInfo();
if (info?.Kind == GemResultKind.Primary) Console.WriteLine(info.Value.Outcome);
if (info?.State.Communication == GemCommunicationState.Communicating) communicated = true;
if (communicated &&
(await equipment.GetTransportStateAsync(cancellationToken)).State != HsmsConnectionState.Selected)
break;
}
await equipment.StopAsync(cancellationToken);
while (await events.MoveNextAsync()) events.Current.Dispose();
await equipment.Completion;멤버
CancelProgramGrantAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.CancelProgramGrant를 큐에 넣습니다.
public Task CancelProgramGrantAsync(GemResult result, CancellationToken cancellationToken = default)그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다. 명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 응답으로 프로그램을 허가한 원래 S7F1 요청 결과입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
허가가 철회되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.CancelProgramGrant의 예외를 전달합니다.
참고
ArgumentNullException예외:result가null입니다.ObjectDisposedException예외:result가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다.
CaptureSpoolAlarmAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.CaptureSpoolAlarm을 큐에 넣습니다.
public Task<GemSpoolWriteResult> CaptureSpoolAlarmAsync(uint alarmId, bool replyExpected, ulong now, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
alarmId | 보고가 활성화된, 구성된 알람의 알람 ID(ALID)입니다. |
replyExpected | 나중에 W 비트를 설정하여 보고를 전달하려면 true입니다. |
now | 항목의 캡처 시각으로 저장되는 애플리케이션 타임스탬프입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
캡처 결과로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.CaptureSpoolAlarm의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
CaptureSpoolAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.CaptureSpool을 큐에 넣습니다.
public Task<GemSpoolWriteResult> CaptureSpoolAsync(byte stream, byte function, bool replyExpected, SecsItem? body, ulong now, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
stream | 스트림이며 2~127입니다. |
function | 1차 메시지의 펑션이며 홀수입니다. |
replyExpected | 나중에 W 비트를 설정하여 메시지를 전달하려면 true입니다. |
body | 메시지 본문이거나, 헤더만 있는 메시지이면 null입니다. 이 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 되며, 인코딩 길이는 명령 바이트 예산에 포함됩니다. |
now | 항목의 캡처 시각으로 저장되는 애플리케이션 타임스탬프입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
캡처 결과로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.CaptureSpool의 예외를 전달합니다.
참고
ObjectDisposedException예외:body가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState이고, 인코딩된 본문이GemSpoolOptions.MaxBodyBytes또는 GEM 아이템 한도의SecsLimits.MessageBytes를 초과하면PdcommStatus.LimitExceeded입니다.
CaptureSpoolEventAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.CaptureSpoolEvent를 큐에 넣습니다.
public Task<GemSpoolWriteResult> CaptureSpoolEventAsync(uint dataId, uint eventId, ReadOnlyMemory<GemDataSample> samples, ulong now, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
dataId | 메시지에 넣는 데이터 ID(DATAID)입니다. |
eventId | 활성화된 이벤트의 수집 이벤트 ID(CEID)입니다. 연결 여부는 관계없습니다. |
samples | 이 보고서에만 사용하는 데이터 변수 값입니다. 이 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 되며, 인코딩 길이는 명령 바이트 예산에 포함됩니다. |
now | 항목의 캡처 시각으로 저장되는 애플리케이션 타임스탬프입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
캡처 결과로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.CaptureSpoolEvent의 예외를 전달합니다.
참고
ArgumentNullException예외: 샘플 또는 그 값이null입니다.ObjectDisposedException예외: 샘플 값이 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState이고, 인코딩된 샘플이 GEM 아이템 한도의SecsLimits.MessageBytes를 초과하면PdcommStatus.LimitExceeded입니다.
ClearDataVariableAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.ClearDataVariable을 큐에 넣습니다.
public Task ClearDataVariableAsync(uint id, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.ClearDataVariable의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 데이터 변수 ID입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
캐시 값이 제거되면 완료되는 작업입니다.
CompleteSpoolDeliveryAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.CompleteSpoolDelivery를 큐에 넣습니다.
public Task<GemSpoolWriteResult> CompleteSpoolDeliveryAsync(GemResult result, bool success, CancellationToken cancellationToken = default)명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다. 그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 현재 전달의 GemOutcome.SpoolDeliveryResponse 또는 GemOutcome.SpoolDeliveryWritten 결과입니다. |
success | 전달을 수락하고 항목을 제거하려면 true이고, 항목을 유지하고 전송 회차를 끝내려면 false입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
쓰기 결과로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.CompleteSpoolDelivery의 예외를 전달합니다.
참고
ArgumentNullException예외:result가null입니다.ObjectDisposedException예외:result가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
ConfirmProgramReplyAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.ConfirmProgramReply를 큐에 넣습니다.
public Task ConfirmProgramReplyAsync(GemResult result, CancellationToken cancellationToken = default)그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다. 명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 설치가 확인되지 않은 수신 S7F3 또는 S7F17 요청입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
저장된 응답을 GemEquipmentWorker.RespondProgramAsync로 보낼 준비가 되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.ConfirmProgramReply의 예외를 전달합니다.
참고
ArgumentNullException예외:result가null입니다.ObjectDisposedException예외:result가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다.
ConfirmSpoolReplyAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.ConfirmSpoolReply를 큐에 넣습니다.
public Task ConfirmSpoolReplyAsync(GemResult result, CancellationToken cancellationToken = default)명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다. 그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | GemEquipmentWorker.RespondSpoolingAsync가 PdcommStatus.SpoolUnconfirmed를 반환한 결과입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보류된 응답이 송신 대상으로 수락되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.ConfirmSpoolReply의 예외를 전달합니다.
참고
ArgumentNullException예외:result가null입니다.ObjectDisposedException예외:result가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
GetAlarmAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetAlarmAt을 큐에 넣습니다.
public Task<GemAlarmEntry> GetAlarmAtAsync(nuint index, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
index | 등록 순서에서 알람의 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
알람 상태, 메타데이터, 텍스트로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetAlarmAt의 예외를 전달합니다.
GetAlarmStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetAlarmState를 큐에 넣습니다.
public Task<GemAlarmState> GetAlarmStateAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
알람 저장소 카운터로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetAlarmState의 예외를 전달합니다.
GetBindingAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetBindingAt을 큐에 넣습니다.
public Task<GemReportBindingEntry> GetBindingAtAsync(nuint index, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetBindingAt의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
index | 저장 순서에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 항목으로 완료되는 작업입니다.
GetBindingStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetBindingState를 큐에 넣습니다.
public Task<GemBindingState> GetBindingStateAsync(CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetBindingState의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보고서 변수 바인딩의 상태로 완료되는 작업입니다.
GetCommandAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetCommandAt을 큐에 넣습니다.
public Task<GemCommandEntry> GetCommandAtAsync(nuint index, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
index | 등록 순서에서 명령의 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
명령 메타데이터와 이름으로 완료되는 작업이며, 호출자는 항목을 해제해야 합니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetCommandAt의 예외를 전달합니다.
GetCommandParameterAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetCommandParameterAt을 큐에 넣습니다.
public Task<GemCommandParameterEntry> GetCommandParameterAtAsync(nuint commandIndex, nuint parameterIndex, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
commandIndex | 등록 순서에서 명령의 0부터 시작하는 위치입니다. |
parameterIndex | 명령 정의에서 매개변수의 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
매개변수 규칙과 이름으로 완료되는 작업이며, 호출자는 항목을 해제해야 합니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetCommandParameterAt의 예외를 전달합니다.
GetCommandStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetCommandState를 큐에 넣습니다.
public Task<GemCommandState> GetCommandStateAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
명령 저장소 카운터로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetCommandState의 예외를 전달합니다.
GetConstantAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetConstant를 큐에 넣습니다.
public Task<SecsItem?> GetConstantAsync(SecsItem id, GemConstantField field, CancellationToken cancellationToken = default)id의 인코딩 길이는 명령 바이트 예산에 포함됩니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 장비 상수 ID(ECID)입니다. ASCII 아이템이거나 스칼라 정수 아이템입니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다. |
field | 읽을 필드입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 아이템으로 완료되는 작업이며, 상수에 해당 선택적 필드가 없으면 null로 완료됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetConstant의 예외를 전달합니다.
참고
ArgumentNullException예외:id가null입니다.ObjectDisposedException예외:id가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외:id가 ASCII 아이템도 스칼라 정수 아이템도 아니면PdcommStatus.InvalidArgument이고, 인코딩 길이가Int32.MaxValue를 초과하면PdcommStatus.LimitExceeded입니다.
GetConstantAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetConstantAt을 큐에 넣습니다.
public Task<GemConstantEntry> GetConstantAtAsync(nuint index, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
index | 등록 순서에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 항목으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetConstantAt의 예외를 전달합니다.
GetConstantStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetConstantState를 큐에 넣습니다.
public Task<GemConstantState> GetConstantStateAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
상수 저장소 카운터로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetConstantState의 예외를 전달합니다.
GetDataAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetData를 큐에 넣습니다.
public Task<SecsItem?> GetDataAsync(uint id, GemDataField field, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetData의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 데이터 변수 ID입니다. |
field | 읽을 필드입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 아이템으로 완료되는 작업입니다. field가 GemDataField.Cached이고 캐시된 값이 없으면 null로 완료됩니다.
GetDataAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetDataAt을 큐에 넣습니다.
public Task<GemDataInfo> GetDataAtAsync(nuint index, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetDataAt의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
index | 저장 순서에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
데이터 변수의 형태와 캐시 상태로 완료되는 작업입니다.
GetDataStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetDataState를 큐에 넣습니다.
public Task<GemDataState> GetDataStateAsync(CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetDataState의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
데이터 변수 저장소 카운터로 완료되는 작업입니다.
GetDirectoryAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetDirectory를 큐에 넣습니다.
public Task<SecsItem> GetDirectoryAsync(uint id, GemDirectoryField field, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetDirectory의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 수집 이벤트 ID(CEID)입니다. |
field | GemDirectoryField.Name 또는 GemDirectoryField.VariableIds입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 아이템으로 완료되는 작업입니다.
GetDirectoryAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetDirectoryAt을 큐에 넣습니다.
public Task<GemDirectoryEntryInfo> GetDirectoryAtAsync(nuint index, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetDirectoryAt의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
index | 저장 순서에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
항목의 이벤트 ID와 변수 수로 완료되는 작업입니다.
GetDirectoryStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetDirectoryState를 큐에 넣습니다.
public Task<GemDirectoryState> GetDirectoryStateAsync(CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetDirectoryState의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
이벤트 디렉터리 카운터로 완료되는 작업입니다.
GetEnhancedCommandAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetEnhancedCommandAt을 큐에 넣습니다.
public Task<GemCommandEntry> GetEnhancedCommandAtAsync(nuint objectIndex, nuint commandIndex, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
objectIndex | 등록 순서에서 객체의 0부터 시작하는 위치입니다. |
commandIndex | 객체 정의에서 명령의 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
명령 메타데이터와 이름으로 완료되는 작업이며, 호출자는 항목을 해제해야 합니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetEnhancedCommandAt의 예외를 전달합니다.
GetEnhancedCommandParameterAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetEnhancedCommandParameterAt을 큐에 넣습니다.
public Task<GemCommandParameterEntry> GetEnhancedCommandParameterAtAsync(nuint objectIndex, nuint commandIndex, nuint parameterIndex, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
objectIndex | 등록 순서에서 객체의 0부터 시작하는 위치입니다. |
commandIndex | 객체 정의에서 명령의 0부터 시작하는 위치입니다. |
parameterIndex | 명령 정의에서 매개변수의 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
매개변수 규칙과 이름으로 완료되는 작업이며, 호출자는 항목을 해제해야 합니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetEnhancedCommandParameterAt의 예외를 전달합니다.
GetEnhancedCommandStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetEnhancedCommandState를 큐에 넣습니다.
public Task<GemEnhancedCommandState> GetEnhancedCommandStateAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
확장 명령 저장소 카운터로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetEnhancedCommandState의 예외를 전달합니다.
GetEnhancedObjectAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetEnhancedObjectAt을 큐에 넣습니다.
public Task<GemEnhancedObjectEntry> GetEnhancedObjectAtAsync(nuint objectIndex, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
objectIndex | 등록 순서에서 객체의 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
객체 메타데이터와 이름으로 완료되는 작업이며, 호출자는 항목을 해제해야 합니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetEnhancedObjectAt의 예외를 전달합니다.
GetEventAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetEventAt을 큐에 넣습니다.
public Task<GemEventDefinition> GetEventAtAsync(nuint index, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetEventAt의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
index | 등록 순서에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
이벤트 ID, 활성화 상태, 연결된 보고서 ID의 복사본으로 완료되는 작업입니다.
GetProgramAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetProgram을 큐에 넣습니다.
public Task<SecsItem> GetProgramAsync(SecsItem id, CancellationToken cancellationToken = default)인코딩된 PPID는 명령 바이트 예산에 포함됩니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 프로세스 프로그램 ID(PPID)입니다. 비어 있지 않은 ASCII 아이템 또는 바이너리 아이템입니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 본문 아이템으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetProgram의 예외를 전달합니다.
참고
ArgumentNullException예외:id가null입니다.ObjectDisposedException예외:id가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다. PPID가 비어 있거나 ASCII 아이템도 바이너리 아이템도 아니면PdcommStatus.InvalidArgument입니다. 아이템이 GEM 아이템 한도를 초과하거나 PPID가GemProgramOptions.MaxIdentifierBytes또는 120바이트보다 길면PdcommStatus.LimitExceeded입니다.
GetProgramAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetProgramAt을 큐에 넣습니다.
public Task<GemProgramEntry> GetProgramAtAsync(nuint index, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
index | 저장소에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 항목으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetProgramAt의 예외를 전달합니다.
참고
PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다.
GetProgramStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetProgramState를 큐에 넣습니다.
public Task<GemProgramState> GetProgramStateAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
프로세스 프로그램 저장소 카운터로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetProgramState의 예외를 전달합니다.
참고
PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다.
GetReportAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetReportAt을 큐에 넣습니다.
public Task<GemReportDefinition> GetReportAtAsync(nuint index, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetReportAt의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
index | 저장 순서에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보고서 ID와 그 변수 ID의 복사본으로 완료되는 작업입니다.
GetReportStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetReportState를 큐에 넣습니다.
public Task<GemReportState> GetReportStateAsync(CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetReportState의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보고서 저장소 카운터로 완료되는 작업입니다.
GetReportValueAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetReportValue를 큐에 넣습니다.
public Task<SecsItem> GetReportValueAsync(uint vid, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetReportValue의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
vid | 변수 ID(VID)입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 새 아이템으로 완료되는 작업입니다.
GetSpoolCatalogAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetSpoolCatalogAt을 큐에 넣습니다.
public Task<GemSpoolMessageKey> GetSpoolCatalogAtAsync(nuint index, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
index | 카탈로그에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
카탈로그 항목으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetSpoolCatalogAt의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
GetSpoolEntryAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetSpoolEntryAt을 큐에 넣습니다.
public Task<GemSpoolEntry> GetSpoolEntryAtAsync(nuint index, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
index | 스풀에서 0부터 시작하는 위치입니다. 0은 가장 오래된 항목입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
호출자가 소유하며 해제해야 하는 항목 복사본으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetSpoolEntryAt의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
GetSpoolEntryCapturedAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetSpoolEntryCapturedAt을 큐에 넣습니다.
public Task<ulong?> GetSpoolEntryCapturedAtAsync(nuint index, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.GetSpoolEntryCapturedAt의 예외로 작업이 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
index | 스풀에서 항목의 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
항목의 캡처 시각으로 완료되는 작업이며, 항목에 캡처 시각이 없으면 null로 완료됩니다.
GetSpoolSelectionAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetSpoolSelectionAt을 큐에 넣습니다.
public Task<GemSpoolSelection> GetSpoolSelectionAtAsync(nuint index, CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
index | 선택에서 0부터 시작하는 위치입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
스트림 선택으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetSpoolSelectionAt의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
GetSpoolStateAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetSpoolState를 큐에 넣습니다.
public Task<GemSpoolState> GetSpoolStateAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
스풀 상태로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GetSpoolState의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
GetStatusAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetStatus를 큐에 넣습니다.
public Task<SecsItem> GetStatusAsync(uint id, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.GetStatus의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 상태 변수 ID(SVID)입니다. |
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
값의 복사본으로 완료되는 작업입니다. 호출자가 아이템을 소유하며 해제해야 합니다.
GetStatusIdAtAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetStatusIdAt을 큐에 넣습니다.
public Task<uint> GetStatusIdAtAsync(nuint index, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.GetStatusIdAt의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
index | 0부터 시작하는 등록 위치입니다. |
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
상태 변수 ID(SVID)로 완료되는 작업입니다.
GetStatusMetadataAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GetStatusMetadata를 큐에 넣습니다.
public Task<GemStatusName> GetStatusMetadataAsync(uint id, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.GetStatusMetadata의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 상태 변수 ID(SVID)입니다. |
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
상태 변수 이름과 단위로 완료되는 작업입니다.
GrantProgramAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.GrantProgram을 큐에 넣습니다.
public Task<HsmsToken> GrantProgramAsync(SecsItem id, uint length, CancellationToken cancellationToken = default)인코딩된 PPID는 명령 바이트 예산에 포함됩니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 프로세스 프로그램 ID(PPID)입니다. 비어 있지 않은 ASCII 아이템 또는 바이너리 아이템입니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다. |
length | 전송할 본문 페이로드의 길이(바이트)입니다(LENGTH). |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
S7F1 요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.GrantProgram의 예외를 전달합니다.
참고
ArgumentNullException예외:id가null입니다.ObjectDisposedException예외:id가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다. PPID가 비어 있거나 ASCII 아이템도 바이너리 아이템도 아니면PdcommStatus.InvalidArgument입니다. 아이템이 GEM 아이템 한도를 초과하거나, PPID가GemProgramOptions.MaxIdentifierBytes또는 120바이트보다 길거나, 요청이 대기 상태로 남으므로GemProgramOptions.MaxPendingIds가 0이거나 PPID가GemProgramOptions.MaxPendingIdentifierBytes보다 길면PdcommStatus.LimitExceeded입니다.
ObserveAlarmAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.ObserveAlarm을 큐에 넣습니다.
public Task<GemAlarmChange> ObserveAlarmAsync(uint id, bool active, CancellationToken cancellationToken = default)관찰은 아무것도 보내지 않습니다. S5F1 보고를 보내려면 GemEquipmentWorker.PublishAlarmAsync를 큐에 넣습니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 알람 ID(ALID)입니다. |
active | 알람 조건이 발생했으면 true이고, 해제되었으면 false입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
관찰된 변경으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.ObserveAlarm의 예외를 전달합니다.
OperatorOfflineAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.OperatorOffline을 큐에 넣습니다.
public Task OperatorOfflineAsync(CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.OperatorOffline의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
장비가 오프라인이 되면 완료되는 작업입니다.
OperatorOnlineAsync
메서드
S1F1을 보내 온라인 전환을 시도하도록 작업자 스레드에서 실행할 GemEquipment.OperatorOnline을 큐에 넣습니다.
public Task<HsmsToken> OperatorOnlineAsync(CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.OperatorOnline의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
S1F1 요청의 토큰으로 완료되는 작업입니다.
PublishAlarmAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.PublishAlarm을 큐에 넣습니다.
public Task<HsmsToken> PublishAlarmAsync(uint id, bool replyExpected, CancellationToken cancellationToken = default)요청한 경우 S5F2 응답은 GemWorker.ReadEventsAsync를 통해 도착합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 알람 ID(ALID)입니다. |
replyExpected | W 비트를 설정하고 S5F2(Alarm Report Acknowledge) 응답을 기대하려면 true입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
S5F1 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.PublishAlarm의 예외를 전달합니다.
PublishEventAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.PublishEvent를 큐에 넣습니다.
public Task<HsmsToken> PublishEventAsync(uint dataId, uint eventId, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.PublishEvent의 예외로 작업이 실패합니다. 호스트의 S6F12는 나중에 GemWorker.ReadEventsAsync의 GemEvent로 도착합니다.
매개변수
| 이름 | 설명 |
|---|---|
dataId | S6F11 메시지에 넣는 데이터 ID(DATAID)입니다. |
eventId | 수집 이벤트 ID(CEID)입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
대기 중인 S6F11/S6F12 거래의 토큰으로 완료되는 작업입니다.
PublishEventWithDataAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.PublishEventWithData를 큐에 넣습니다.
public Task<HsmsToken> PublishEventWithDataAsync(uint dataId, uint eventId, ReadOnlyMemory<GemDataSample> samples, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.PublishEventWithData의 예외로 작업이 실패합니다. 명령은 작업자의 명령 바이트 예산에서 샘플 인코딩 크기와 샘플별 오버헤드를 더한 만큼을 예약합니다. 샘플이 없으면 GemEquipmentWorker.PublishEventAsync와 같으며, 동기 메서드처럼 데이터 구성이 필요하지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
dataId | S6F11 메시지에 넣는 데이터 ID(DATAID)입니다. |
eventId | 활성화된 이벤트의 수집 이벤트 ID(CEID)입니다. 연결 여부는 관계없습니다. |
samples | 이 보고서에만 사용하는 데이터 변수 값입니다. 작업자는 이 메서드가 반환되기 전에 복사본을 인코딩하므로 호출자는 그 뒤에 아이템을 해제해도 됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
대기 중인 S6F11/S6F12 거래의 토큰으로 완료되는 작업입니다.
참고
OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.ArgumentNullException예외: 샘플 또는 그 값이null입니다.ObjectDisposedException예외: 샘플 값이 해제되었습니다.PdcommException예외:samples가 비어 있지 않은데 작업자가 데이터 구성 없이 시작되었으면PdcommStatus.InvalidState이고, 샘플이 구성된 개수, 바이트 또는 아이템 한도를 초과하면PdcommStatus.LimitExceeded입니다.
RequestProgramAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.RequestProgram을 큐에 넣습니다.
public Task<HsmsToken> RequestProgramAsync(SecsItem id, CancellationToken cancellationToken = default)인코딩된 PPID는 명령 바이트 예산에 포함됩니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 프로세스 프로그램 ID(PPID)입니다. 비어 있지 않은 ASCII 아이템 또는 바이너리 아이템입니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
S7F5 요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.RequestProgram의 예외를 전달합니다.
참고
ArgumentNullException예외:id가null입니다.ObjectDisposedException예외:id가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다. PPID가 비어 있거나 ASCII 아이템도 바이너리 아이템도 아니면PdcommStatus.InvalidArgument입니다. 아이템이 GEM 아이템 한도를 초과하거나, PPID가GemProgramOptions.MaxIdentifierBytes또는 120바이트보다 길거나, 요청이 대기 상태로 남으므로GemProgramOptions.MaxPendingIds가 0이거나 PPID가GemProgramOptions.MaxPendingIdentifierBytes보다 길면PdcommStatus.LimitExceeded입니다.
RespondCommandAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.RespondCommand를 큐에 넣습니다.
public Task<GemCommandReply> RespondCommandAsync(GemResult result, GemCommandDecision decision, ReadOnlyMemory<GemCommandIssue> issues, CancellationToken cancellationToken = default)작업자는 명령이 끝날 때까지 네이티브 결과를 유지합니다. 명령은 명령 바이트 예산에서 문제 이름의 인코딩 크기와 GemEquipmentOptions.ItemLimits의 메시지 하나 크기를 더한 만큼을 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 수신한 S2F41 요청의 결과(GemOutcome.CommandReceived)입니다. |
decision | 검증이 요청을 수락했을 때 HCACK로 보내는 애플리케이션 결정입니다. |
issues | GemCommandDecision.ParameterErrors와 함께 보낼 매개변수 확인 응답입니다. 문제 이름은 메서드가 반환되기 전에 스냅샷으로 인코딩됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보낸 HCACK와 완료 이벤트(있는 경우)로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.RespondCommand의 예외를 전달합니다.
참고
ArgumentNullException예외:result, 문제 또는 문제 이름이null입니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.ObjectDisposedException예외:result또는 문제 이름이 해제되었습니다.PdcommException예외: 문제 수, 문제 이름 하나 또는 이름 전체의 인코딩 크기가GemEquipmentOptions.ItemLimits의 아이템 한도를 초과하면PdcommStatus.LimitExceeded입니다.
RespondConstantsAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.RespondConstants를 큐에 넣습니다.
public Task<GemConstantReply> RespondConstantsAsync(GemResult result, GemConstantDecision decision, CancellationToken cancellationToken = default)그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다. 명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes와 상수 수신 예약분을 더한 크기를 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 결과가 GemOutcome.ConstantChangesReceived인 결과입니다. |
decision | 수신 검증이 요청을 수락했을 때 보낼 EAC입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보낸 EAC와 저장소가 바뀌었는지 여부로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.RespondConstants의 예외를 전달합니다.
참고
ArgumentNullException예외:result가null입니다.ObjectDisposedException예외:result가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.
RespondEnhancedCommandAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.RespondEnhancedCommand를 큐에 넣습니다.
public Task<GemCommandReply> RespondEnhancedCommandAsync(GemResult result, GemCommandDecision decision, SecsItem? acknowledgements, CancellationToken cancellationToken = default)작업자는 명령이 끝날 때까지 네이티브 결과를 유지합니다. 명령은 명령 바이트 예산에서 확인 응답 스냅샷의 인코딩 크기와 GemEquipmentOptions.ItemLimits의 메시지 하나 크기를 더한 만큼을 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 수신한 S2F49 요청의 결과(GemOutcome.EnhancedCommandReceived)입니다. |
decision | 검증이 요청을 수락했을 때 HCACK로 보내는 애플리케이션 결정입니다. |
acknowledgements | GemCommandDecision.ParameterErrors에 사용할 매개변수 확인 목록이거나 null입니다. 검증이 요청을 수락했으면 아이템은 메서드가 반환되기 전에 스냅샷으로 인코딩되고, 그렇지 않으면 무시됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보낸 HCACK와 완료 이벤트(있는 경우)로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.RespondEnhancedCommand의 예외를 전달합니다.
참고
ArgumentNullException예외:result가null입니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.ObjectDisposedException예외:result또는acknowledgements가 해제되었습니다.PdcommException예외:result가 확장 명령 결과가 아니면PdcommStatus.InvalidState이고,acknowledgements가GemEquipmentOptions.ItemLimits를 초과하면PdcommStatus.LimitExceeded입니다.
RespondProgramAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.RespondProgram을 큐에 넣습니다.
public Task RespondProgramAsync(GemResult result, GemProgramPutMode mode, byte decision, CancellationToken cancellationToken = default)그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다. 명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 결과가 GemOutcome.ProgramReceived인 결과입니다. |
mode | PPID가 이미 있을 때 허가되거나 수신한 프로그램을 저장하는 방식입니다. |
decision | 애플리케이션 결정이며 0은 수락입니다. 코드는 동기 메서드를 참고합니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
응답을 보내면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.RespondProgram의 예외를 전달합니다. 변경은 설치되었지만 영구 저장을 확인할 수 없으면 PdcommException(PdcommStatus.ProgramUnconfirmed)으로 실패합니다.
참고
ArgumentNullException예외:result가null입니다.ObjectDisposedException예외:result가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다.
RespondReportQueryAsync
메서드
수신한 S6F15, S6F19 또는 S6F21 보고서 조회에 응답하도록 작업자 스레드에서 실행할 GemEquipment.RespondReportQuery를 큐에 넣습니다.
public Task RespondReportQueryAsync(GemResult result, ReadOnlyMemory<GemDataSample> samples, CancellationToken cancellationToken = default)작업자는 명령이 완료될 때까지 result를 유지합니다. 샘플은 메서드가 반환되기 전에 검증되고 인코딩되며, 샘플 크기와 아이템 한도 SecsLimits.MessageBytes는 명령 바이트 예산에 포함됩니다. 명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.RespondReportQuery의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | GemEvent에서 가져온 GemOutcome.ReportQueryReceived 결과입니다. |
samples | 응답에 사용할 현재 데이터 변수 샘플입니다. 캐시 값과 등록된 값만 사용하려면 비워 둡니다. |
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
응답을 보내면 완료되는 작업입니다.
참고
ArgumentNullException예외:result, 샘플 또는 샘플 값이null입니다.ObjectDisposedException예외:result또는 샘플 값이 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 데이터 변수 구성 없이 시작되었는데 샘플을 지정했으면PdcommStatus.InvalidState이고, 샘플이 데이터 변수 한도를 초과하면PdcommStatus.LimitExceeded입니다.
RespondSpoolingAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.RespondSpool을 큐에 넣습니다.
public Task<PdcommStatus> RespondSpoolingAsync(GemResult result, CancellationToken cancellationToken = default)명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다. 그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다.
매개변수
| 이름 | 설명 |
|---|---|
result | 요청의 GemOutcome.SpoolReceived 결과입니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
응답을 보냈으면 PdcommStatus.Ok로, 응답이 GemEquipmentWorker.ConfirmSpoolReplyAsync까지 보류되면 PdcommStatus.SpoolUnconfirmed로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.RespondSpool의 예외를 전달합니다.
참고
ArgumentNullException예외:result가null입니다.ObjectDisposedException예외:result가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
ResyncProgramsAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.ResyncPrograms를 큐에 넣습니다.
public Task ResyncProgramsAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
부모 디렉터리가 동기화되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.ResyncPrograms의 예외를 전달합니다.
참고
PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다.
ResyncSpoolingAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.ResyncSpool을 큐에 넣습니다.
public Task ResyncSpoolingAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
스냅샷 파일의 부모 디렉터리가 동기화되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.ResyncSpool의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
RetrySpoolDequeueAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.RetrySpoolDequeue를 큐에 넣습니다.
public Task<GemSpoolWriteResult> RetrySpoolDequeueAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
제거의 쓰기 결과로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.RetrySpoolDequeue의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
SendNextSpoolAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.SendNextSpool을 큐에 넣습니다.
public Task<HsmsToken> SendNextSpoolAsync(CancellationToken cancellationToken = default)전달 결과는 GemWorker.ReadEventsAsync를 통해 도착합니다. 이 결과를 GemEquipmentWorker.CompleteSpoolDeliveryAsync에 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
보낸 항목의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.SendNextSpool의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
SendProgramAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.SendProgram을 큐에 넣습니다.
public Task<HsmsToken> SendProgramAsync(SecsItem id, SecsItem body, CancellationToken cancellationToken = default)인코딩된 PPID와 본문은 명령 바이트 예산에 포함됩니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 프로세스 프로그램 ID(PPID)입니다. 비어 있지 않은 ASCII 아이템 또는 바이너리 아이템입니다. 메서드가 반환되기 전에 인코딩됩니다. |
body | 프로세스 프로그램 본문(PPBODY)입니다. ASCII, 바이너리, I1~I8 또는 U1~U8 아이템입니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 두 아이템을 모두 해제해도 됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
S7F3 요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.SendProgram의 예외를 전달합니다.
참고
ArgumentNullException예외:id또는body가null입니다.ObjectDisposedException예외:id또는body가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면PdcommStatus.InvalidState입니다. PPID가 비어 있거나 ASCII 아이템도 바이너리 아이템도 아니거나, 본문 형식이 지원되지 않으면PdcommStatus.InvalidArgument입니다. 아이템이 GEM 아이템 한도를 초과하거나, PPID가GemProgramOptions.MaxIdentifierBytes또는 120바이트보다 길거나, 본문 페이로드가GemProgramOptions.MaxBodyBytes또는 16,777,215바이트보다 길거나, 요청이 대기 상태로 남으므로GemProgramOptions.MaxPendingIds가 0이거나 PPID가GemProgramOptions.MaxPendingIdentifierBytes보다 길면PdcommStatus.LimitExceeded입니다.
SetOnlineModeAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.SetOnlineMode를 큐에 넣습니다.
public Task SetOnlineModeAsync(GemOnlineMode mode, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.SetOnlineMode의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
mode | 온라인 모드입니다. |
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
모드가 설정되면 완료되는 작업입니다.
StartAsync
메서드
상태 변수, 보고서, 알람, 원격 명령, 확장 원격 명령, 장비 상수로 끝점을 구성하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus, GemReportConfiguration? reports, GemAlarmConfiguration? alarms, GemCommandConfiguration? commands, GemEnhancedCommandConfiguration? enhancedCommands, GemConstantConfiguration constants, CancellationToken cancellationToken = default)구성은 작업자 스레드가 시작되기 전에 검증되고 복사됩니다. 그런 다음 작업자 스레드가 끝점을 만들고, 상태 변수를 등록하고, 상수와 다른 저장소를 설치한 뒤 전송을 시작합니다. 그 뒤에는 S2F13과 S2F29에 자동으로 응답하며, S2F15 요청은 GemEquipmentWorker.RespondConstantsAsync를 기다리는 이벤트로 도착합니다.
수신한 S2F15 결과는 상수 저장소의 복사본을 보유하므로, 버퍼에 있는 모든 이벤트는 HsmsWorkerOptions.MaxEventBytes에서 GemConstantOptions.MaxMetadataBytes와 GemConstantOptions.MaxValueBytes 합의 두 배를 추가로 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | GemEquipment.Create에 전달하는 숫자 IPv4 또는 IPv6 소켓 주소입니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 작업자의 명령 큐, 이벤트 큐, 폴링 옵션입니다. |
initialStatus | 등록할 상태 변수이거나, 없으면 null입니다. |
reports | 구성할 보고서 카탈로그이거나, 없으면 null입니다. |
alarms | 설치할 알람 저장소이거나, 없으면 null입니다. |
commands | 설치할 원격 명령 저장소이거나, 없으면 null입니다. |
enhancedCommands | 설치할 확장 원격 명령 저장소이거나, 없으면 null입니다. |
constants | 설치할 장비 상수 저장소입니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
시작된 작업자로 완료되는 작업입니다. 인수와 옵션의 검증 오류, GemEquipment.ConfigureConstants와 다른 구성 단계의 검증 오류, 끝점 생성 또는 시작 실패로 작업이 실패하며, 시작 중에 cancellationToken이 취소되면 작업이 취소됩니다. HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나, GEM 결과 예약 하나, 상수 수신 예약을 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다.
참고
ArgumentNullException예외:constants가null입니다.
StartAsync
메서드
수집 이벤트 디렉터리와, 선택적으로 상태 변수, 보고서 저장소, 알람, 원격 명령, 확장 원격 명령, 데이터 변수, 장비 상수로 끝점을 구성하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus, GemReportConfiguration? reports, GemAlarmConfiguration? alarms, GemCommandConfiguration? commands, GemEnhancedCommandConfiguration? enhancedCommands, GemDataConfiguration? data, GemConstantConfiguration? constants, GemDirectoryConfiguration directories, CancellationToken cancellationToken = default)작업자 스레드가 끝점을 만들어 소유하며, 시작하기 전에 구성합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 전송 모드에 따라 연결하거나 수신 대기할 숫자 IPv4 또는 IPv6 소켓 주소입니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 작업자의 큐, 예산, 타이밍 옵션입니다. |
initialStatus | 끝점이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. |
reports | 구성할 이벤트 보고서 저장소이거나, 없으면 null입니다. |
alarms | 구성할 알람이거나, 없으면 null입니다. |
commands | 구성할 원격 명령이거나, 없으면 null입니다. |
enhancedCommands | 구성할 확장 원격 명령이거나, 없으면 null입니다. |
data | 구성할 데이터 변수와 보고서 바인딩이거나, 없으면 null입니다. |
constants | 구성할 장비 상수이거나, 없으면 null입니다. |
directories | 구성할 수집 이벤트 디렉터리입니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
시작된 작업자로 완료되는 작업입니다. 인수가 null이거나 잘못된 경우, 구성이 한도를 초과하거나 중복 ID를 포함하는 경우(PdcommException), 끝점을 만들거나 구성하거나 시작할 수 없는 경우(예: 디렉터리가 보고서 저장소나 데이터 바인딩과 맞지 않는 경우)에 작업이 실패합니다. 시작이 완료되기 전에 cancellationToken이 취소되면 작업이 취소됩니다.
참고
ArgumentNullException예외:directories가null입니다.
StartAsync
메서드
데이터 변수와, 선택적으로 상태 변수, 보고서 저장소, 알람, 원격 명령, 확장 원격 명령, 장비 상수로 끝점을 구성하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus, GemReportConfiguration? reports, GemAlarmConfiguration? alarms, GemCommandConfiguration? commands, GemEnhancedCommandConfiguration? enhancedCommands, GemDataConfiguration data, GemConstantConfiguration? constants = null, CancellationToken cancellationToken = default)작업자 스레드가 끝점을 만들어 소유하며, 시작하기 전에 구성합니다. 데이터 옵션은 GemEquipmentWorker.UpdateDataVariableAsync와 GemEquipmentWorker.PublishEventWithDataAsync가 큐에 넣기 전에 값을 검증할 수 있도록 보관됩니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 전송 모드에 따라 연결하거나 수신 대기할 숫자 IPv4 또는 IPv6 소켓 주소입니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 작업자의 큐, 예산, 타이밍 옵션입니다. |
initialStatus | 끝점이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. |
reports | 구성할 이벤트 보고서 저장소이거나, 없으면 null입니다. |
alarms | 구성할 알람이거나, 없으면 null입니다. |
commands | 구성할 원격 명령이거나, 없으면 null입니다. |
enhancedCommands | 구성할 확장 원격 명령이거나, 없으면 null입니다. |
data | 구성할 데이터 변수와 선택적 보고서 바인딩입니다. |
constants | 구성할 장비 상수이거나, 없으면 null입니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
시작된 작업자로 완료되는 작업입니다. 인수가 null이거나 잘못된 경우(예: GemDataConfiguration.BindingOptions와 GemDataConfiguration.Bindings 중 하나만 설정하면 ArgumentException), 구성이 한도를 초과하는 경우, 끝점을 만들거나 구성하거나 시작할 수 없는 경우에 작업이 실패합니다. 시작이 완료되기 전에 cancellationToken이 취소되면 작업이 취소됩니다.
참고
ArgumentNullException예외:data가null입니다.
StartAsync
메서드
상태 변수, 보고서, 알람, 원격 명령, 확장 원격 명령으로 끝점을 구성하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus, GemReportConfiguration? reports, GemAlarmConfiguration? alarms, GemCommandConfiguration? commands, GemEnhancedCommandConfiguration enhancedCommands, CancellationToken cancellationToken = default)구성은 작업자 스레드가 시작되기 전에 검증되고 복사됩니다. 그런 다음 작업자 스레드가 끝점을 만들고, 상태 변수, 보고서, 알람, 명령, 확장 명령 순서로 구성을 적용한 뒤 전송을 시작합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | GemEquipment.Create에 전달하는 숫자 IPv4 또는 IPv6 소켓 주소입니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 작업자의 명령 큐, 이벤트 큐, 폴링 옵션입니다. |
initialStatus | 등록할 상태 변수이거나, 없으면 null입니다. |
reports | 구성할 보고서 카탈로그이거나, 없으면 null입니다. 완료 이벤트는 이 카탈로그의 이벤트 ID여야 합니다. |
alarms | 설치할 알람 저장소이거나, 없으면 null입니다. |
commands | 설치할 원격 명령 저장소이거나, 없으면 null입니다. |
enhancedCommands | 설치할 확장 원격 명령 저장소입니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
시작된 작업자로 완료되는 작업입니다. 인수와 옵션의 검증 오류, GemEquipment.ConfigureEnhancedCommands와 다른 구성 단계의 검증 오류, 끝점 생성 또는 시작 실패로 작업이 실패하며, 시작 중에 cancellationToken이 취소되면 작업이 취소됩니다.
참고
ArgumentNullException예외:enhancedCommands가null입니다.
StartAsync
메서드
상태 변수, 보고서, 알람, 원격 명령으로 끝점을 구성하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus, GemReportConfiguration? reports, GemAlarmConfiguration? alarms, GemCommandConfiguration commands, CancellationToken cancellationToken = default)구성은 작업자 스레드가 시작되기 전에 검증되고 복사됩니다. 그런 다음 작업자 스레드가 끝점을 만들고, 상태 변수, 보고서, 알람, 명령 순서로 구성을 적용한 뒤 전송을 시작합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | GemEquipment.Create에 전달하는 숫자 IPv4 또는 IPv6 소켓 주소입니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 작업자의 명령 큐, 이벤트 큐, 폴링 옵션입니다. |
initialStatus | 등록할 상태 변수이거나, 없으면 null입니다. |
reports | 구성할 보고서 카탈로그이거나, 없으면 null입니다. 완료 이벤트는 이 카탈로그의 이벤트 ID여야 합니다. |
alarms | 설치할 알람 저장소이거나, 없으면 null입니다. |
commands | 설치할 원격 명령 저장소입니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
시작된 작업자로 완료되는 작업입니다. 인수와 옵션의 검증 오류, GemEquipment.ConfigureCommands와 다른 구성 단계의 검증 오류, 끝점 생성 또는 시작 실패로 작업이 실패하며, 시작 중에 cancellationToken이 취소되면 작업이 취소됩니다.
참고
ArgumentNullException예외:commands가null입니다.
StartAsync
메서드
상태 변수, 보고서, 알람으로 끝점을 구성하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus, GemReportConfiguration? reports, GemAlarmConfiguration alarms, CancellationToken cancellationToken = default)구성은 작업자 스레드가 시작되기 전에 검증되고 복사됩니다. 그런 다음 작업자 스레드가 끝점을 만들고, 상태 변수를 등록하고, 보고서를 구성하고, 알람을 설치한 뒤 전송을 시작합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | GemEquipment.Create에 전달하는 숫자 IPv4 또는 IPv6 소켓 주소입니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 작업자의 명령 큐, 이벤트 큐, 폴링 옵션입니다. |
initialStatus | 등록할 상태 변수이거나, 없으면 null입니다. |
reports | 구성할 보고서 카탈로그이거나, 없으면 null입니다. 알람 발생 이벤트와 해제 이벤트는 이 카탈로그의 이벤트 ID여야 합니다. |
alarms | 설치할 알람 저장소입니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
시작된 작업자로 완료되는 작업입니다. 인수와 옵션의 검증 오류, GemEquipment.ConfigureAlarms와 다른 구성 단계의 검증 오류, 끝점 생성 또는 시작 실패로 작업이 실패하며, 시작 중에 cancellationToken이 취소되면 작업이 취소됩니다.
참고
ArgumentNullException예외:alarms가null입니다.
StartAsync
메서드
초기 상태 변수와 이벤트 보고서 저장소로 끝점을 구성하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus, GemReportConfiguration reports, CancellationToken cancellationToken = default)작업자 스레드가 끝점을 만들어 소유하며, 시작하기 전에 GemEquipment.ConfigureReports로 구성을 적용합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 전송 모드에 따라 연결하거나 수신 대기할 숫자 IPv4 또는 IPv6 소켓 주소입니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 작업자의 큐, 예산, 타이밍 옵션입니다. |
initialStatus | 끝점이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. |
reports | 구성할 이벤트 보고서 저장소입니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
시작된 작업자로 완료되는 작업입니다. 인수가 null이거나 잘못된 경우, reports에 나열된 이벤트가 GemReportOptions.MaxEvents보다 많은 경우(PdcommStatus.LimitExceeded인 PdcommException), 끝점을 만들거나 구성하거나 시작할 수 없는 경우에 작업이 실패합니다. 시작이 완료되기 전에 cancellationToken이 취소되면 작업이 취소됩니다.
참고
ArgumentNullException예외:reports가null입니다.
StartAsync
메서드
GEM 장비 끝점을 만들고 구성하고 시작하는 폴링 스레드를 시작합니다.
public static Task<GemEquipmentWorker> StartAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, IReadOnlyList<GemStatusVariable>? initialStatus = null, CancellationToken cancellationToken = default)address, transportOptions, options 또는 workerOptions가 null이면 ArgumentNullException으로 작업이 실패합니다. workerOptions가 잘못되었거나 HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나(HsmsOptions.MaxFrameBytes에서 14를 뺀 값)와 GEM 결과 예약 하나(GEM 아이템 한도의 SecsLimits.MessageBytes)를 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다. 작업자가 시작되기 전에 cancellationToken이 취소되면 OperationCanceledException으로 실패하고, 작업자 스레드에서 발생한 GemEquipment.Create 또는 GemEquipment.RegisterStatus의 예외로도 실패합니다. 시작이 실패하면 작업자도 중지됩니다. 또한 initialStatus가 GemEquipmentOptions.MaxVariables, GemEquipmentOptions.MaxMetadataBytes, GemEquipmentOptions.MaxValueBytes 또는 아이템 한도를 초과하면 PdcommException(PdcommStatus.LimitExceeded)으로, 항목의 이름, 단위 또는 값이 null이면 ArgumentNullException으로 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다. |
initialStatus | 전송이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. 값은 이 메서드가 실행되는 동안 인코딩되므로 호출자는 메서드가 반환된 뒤 해제해도 됩니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
작업자 스레드에서 장비 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.
StartWithFormattedProgramsAsync
메서드
GEM 장비 끝점을 만들어 구성하고, 정형 프로세스 프로그램 서비스를 활성화하고, 시작하는 폴링 스레드를 시작합니다.
public static Task<GemEquipmentWorker> StartWithFormattedProgramsAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, GemFormattedProgramConfiguration configuration, IReadOnlyList<GemStatusVariable>? initialStatus = null, CancellationToken cancellationToken = default)작업자 스레드는 initialStatus를 등록한 다음 GemFormattedProgramConfiguration.Configure로 configuration을 적용합니다. configuration 검사를 제외한 실패는 GemEquipmentWorker.StartAsync에서 설명한 대로 작업을 통해 보고됩니다. 작업자 스레드에서 발생한 GemFormattedProgramConfiguration.Configure의 예외로도 작업이 실패합니다. 정형 프로그램 작업에는 GemWorker.FormattedPrograms를 사용합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다. |
configuration | 전송이 시작되기 전에 활성화할 정형 프로세스 프로그램 서비스입니다. |
initialStatus | 전송이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. 값은 이 메서드가 실행되는 동안 인코딩되므로 호출자는 메서드가 반환된 뒤 해제해도 됩니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
작업자 스레드에서 장비 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.
참고
ArgumentNullException예외:configuration이null입니다.
StartWithProgramsAsync
메서드
초기 프로그램을 로드한 프로세스 프로그램 저장소로 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartWithProgramsAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, GemProgramConfiguration programs, IReadOnlyList<GemStatusVariable>? initialStatus = null, CancellationToken cancellationToken = default)프로그램 구성은 이 메서드가 반환되기 전에 검증되고 복사됩니다. address, transportOptions, options 또는 workerOptions가 null이면 ArgumentNullException으로 작업이 실패합니다. workerOptions가 잘못되었거나 HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나(HsmsOptions.MaxFrameBytes에서 14를 뺀 값)와 GEM 결과 예약 하나(GEM 아이템 한도의 SecsLimits.MessageBytes)를 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다. 작업자가 시작되기 전에 cancellationToken이 취소되면 OperationCanceledException으로 실패하고, 작업자 스레드에서 발생한 GemEquipment.Create 또는 GemEquipment.RegisterStatus의 예외로도 실패합니다. 시작이 실패하면 작업자도 중지됩니다. 또한 initialStatus가 GemEquipmentOptions.MaxVariables, GemEquipmentOptions.MaxMetadataBytes, GemEquipmentOptions.MaxValueBytes 또는 아이템 한도를 초과하면 PdcommException(PdcommStatus.LimitExceeded)으로, 항목의 이름, 단위 또는 값이 null이면 ArgumentNullException으로 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다. |
programs | 프로세스 프로그램 옵션, 초기 프로그램, 선택적 저장 경로입니다. 경로가 null이면 저장소를 메모리에 보관합니다. |
initialStatus | 전송이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. 값은 이 메서드가 실행되는 동안 인코딩되므로 호출자는 메서드가 반환된 뒤 해제해도 됩니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
작업자 스레드에서 장비 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.
참고
ArgumentNullException예외:options,programs또는 그 옵션이null입니다.ArgumentException예외: 초기 프로그램이null이거나 저장 경로에 NUL 문자가 있습니다.ObjectDisposedException예외: 초기 프로그램 아이템이 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 프로그램 옵션이나 초기 프로그램이 잘못되었거나 프로그램 한도를 초과하면PdcommStatus.InvalidArgument또는PdcommStatus.LimitExceeded입니다.
StartWithProgramsAsync
메서드
빈 프로세스 프로그램 저장소로 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartWithProgramsAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, GemProgramOptions programs, IReadOnlyList<GemStatusVariable>? initialStatus = null, CancellationToken cancellationToken = default)프로세스 프로그램 거래(스트림 7)는 구성된 저장소가 처리합니다. address, transportOptions, options 또는 workerOptions가 null이면 ArgumentNullException으로 작업이 실패합니다. workerOptions가 잘못되었거나 HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나(HsmsOptions.MaxFrameBytes에서 14를 뺀 값)와 GEM 결과 예약 하나(GEM 아이템 한도의 SecsLimits.MessageBytes)를 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다. 작업자가 시작되기 전에 cancellationToken이 취소되면 OperationCanceledException으로 실패하고, 작업자 스레드에서 발생한 GemEquipment.Create 또는 GemEquipment.RegisterStatus의 예외로도 실패합니다. 시작이 실패하면 작업자도 중지됩니다. 또한 initialStatus가 GemEquipmentOptions.MaxVariables, GemEquipmentOptions.MaxMetadataBytes, GemEquipmentOptions.MaxValueBytes 또는 아이템 한도를 초과하면 PdcommException(PdcommStatus.LimitExceeded)으로, 항목의 이름, 단위 또는 값이 null이면 ArgumentNullException으로 실패합니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다. |
programs | 프로세스 프로그램 한도와 허가 정책입니다. 저장소는 메모리에 보관됩니다. |
initialStatus | 전송이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. 값은 이 메서드가 실행되는 동안 인코딩되므로 호출자는 메서드가 반환된 뒤 해제해도 됩니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
작업자 스레드에서 장비 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.
참고
ArgumentNullException예외:programs가null입니다.PdcommException예외:programs의 허가 정책이 정의되지 않았으면PdcommStatus.InvalidArgument입니다.
StartWithSpoolingAsync
메서드
전송이 시작되기 전에 끝점에 스풀을 연결하는 장비 작업자를 시작합니다.
public static Task<GemEquipmentWorker> StartWithSpoolingAsync(string address, HsmsOptions transportOptions, GemEquipmentOptions options, HsmsWorkerOptions workerOptions, GemEquipmentSpoolConfiguration spooling, IReadOnlyList<GemStatusVariable>? initialStatus = null, CancellationToken cancellationToken = default)작업은 GemEquipmentWorker.StartAsync와 같은 경우에 실패하며, 작업자 스레드에서 발생한 GemEquipment.ConfigureSpooling 또는 GemEquipment.ConfigureLocalSpooling의 예외로도 실패합니다. 이 호출들의 쓰기 결과는 반환되지 않습니다. PdcommStatus.SpoolUnconfirmed 결과는 스풀이 메모리와 디스크에 설치되었지만 상위 디렉터리 동기화가 실패했다는 뜻이며, 이때도 작업자는 시작됩니다. 파일 기반 스풀의 영속성을 확인해야 하면 이 작업이 끝난 뒤 GemEquipmentWorker.ResyncSpoolingAsync를 한 번 호출합니다. 이 호출은 시작 시 쓰기가 확인되었는지와 관계없이 디렉터리가 동기화되었을 때만 성공하며, 스냅샷을 다시 쓰지 않습니다. 이 방법으로 시작한 작업자만 스풀링 명령을 받습니다.
매개변수
| 이름 | 설명 |
|---|---|
address | 127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다. |
transportOptions | HSMS 전송 옵션입니다. |
options | GEM 장비 옵션입니다. |
workerOptions | 명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다. |
spooling | 연결할 스풀입니다. 이 메서드가 반환되기 전에 복사됩니다. |
initialStatus | 전송이 시작되기 전에 등록할 상태 변수이거나, 없으면 null입니다. 값은 이 메서드가 실행되는 동안 인코딩되므로 호출자는 메서드가 반환된 뒤 해제해도 됩니다. |
cancellationToken | 시작을 취소하는 토큰입니다. |
반환값
작업자 스레드에서 장비 끝점이 만들어지고, 스풀이 연결되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.
참고
ArgumentNullException예외:spooling또는 그GemEquipmentSpoolConfiguration.Options가null입니다.ArgumentOutOfRangeException예외:GemEquipmentSpoolConfiguration.LocalPolicy의GemSpoolPolicy.Overflow가 정의된 값이 아닙니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 카탈로그가GemSpoolOptions.MaxCatalogEntries를 초과하거나 선택이GemSpoolOptions.MaxStreams또는GemSpoolOptions.MaxFunctionsPerStream을 초과하면PdcommStatus.LimitExceeded입니다.
StopSpoolTransmitAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.StopSpoolTransmit을 큐에 넣습니다.
public Task StopSpoolTransmitAsync(CancellationToken cancellationToken = default)매개변수
| 이름 | 설명 |
|---|---|
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
전송 회차가 끝나면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.StopSpoolTransmit의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
SyncSpoolingAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.SyncSpool을 큐에 넣습니다.
public Task<GemSpoolWriteResult> SyncSpoolingAsync(ulong now, CancellationToken cancellationToken = default)캡처, 응답, 전달이 현재 통신 상태를 보도록 이벤트를 읽은 뒤에 큐에 넣습니다.
매개변수
| 이름 | 설명 |
|---|---|
now | 애플리케이션 타임스탬프입니다. 스풀링이 활성화될 때 시작 시각으로 저장됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
쓰기 결과로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemEquipment.SyncSpool의 예외를 전달합니다.
참고
PdcommException예외: 작업자가GemEquipmentWorker.StartWithSpoolingAsync로 시작되지 않았으면PdcommStatus.InvalidState입니다.
UpdateDataVariableAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.UpdateDataVariable을 큐에 넣습니다.
public Task UpdateDataVariableAsync(uint id, SecsItem value, CancellationToken cancellationToken = default)명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemEquipment.UpdateDataVariable의 예외로 작업이 실패합니다. 명령은 작업자의 명령 바이트 예산에서 값의 인코딩 크기를 예약합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 데이터 변수 ID입니다. |
value | 새 값입니다. 작업자는 이 메서드가 반환되기 전에 복사본을 인코딩하므로 호출자는 그 뒤에 아이템을 해제해도 됩니다. |
cancellationToken | 명령이 실행되기 전에 명령을 취소하는 토큰입니다. |
반환값
캐시 값이 교체되면 완료되는 작업입니다.
참고
ArgumentNullException예외:value가null입니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.ObjectDisposedException예외:value가 해제되었습니다.PdcommException예외: 작업자가 데이터 구성 없이 시작되었으면PdcommStatus.InvalidState이고, 값이 구성된 아이템 한도를 초과하면PdcommStatus.LimitExceeded입니다.
UpdateStatusAsync
메서드
작업자 스레드에서 실행하도록 GemEquipment.UpdateStatus를 큐에 넣습니다.
public Task UpdateStatusAsync(uint id, SecsItem value, CancellationToken cancellationToken = default)값은 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 되며, 인코딩 길이는 명령 바이트 예산에 포함됩니다. 명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemEquipment.UpdateStatus의 예외를 전달합니다.
매개변수
| 이름 | 설명 |
|---|---|
id | 상태 변수 ID(SVID)입니다. |
value | 새 값입니다. 등록된 값과 최상위 형식이 같아야 합니다. |
cancellationToken | 아직 실행되지 않은 명령을 취소하는 토큰입니다. |
반환값
값이 저장되면 완료되는 작업입니다.
참고
ArgumentNullException예외:value가null입니다.ObjectDisposedException예외:value가 해제되었습니다.OperationCanceledException예외:cancellationToken이 이미 취소되었습니다.PdcommException예외: 인코딩된 값이GemEquipmentOptions.MaxValueBytes또는 아이템 한도SecsLimits.MessageBytes보다 크면PdcommStatus.LimitExceeded입니다.