콘텐츠로 이동
무료 평가 시작

PDComm.GemHostWorker

클래스

전용 폴링 스레드에서 실행되며 비동기 명령을 제공하는 GEM 호스트 끝점입니다.

public sealed class GemHostWorker : GemWorker

작업자는 자신의 스레드에서 GemHost를 만들고, 전송을 시작하며, 처리된 모든 이벤트를 GemWorker.ReadEventsAsync로 전달합니다. 요청 명령은 메시지를 보내면 요청 토큰으로 완료되며, 응답은 나중에 결과에 같은 GemResultInfo.Token이 들어 있는 GemEvent로 도착합니다.

각 *Async 명령은 같은 이름의 동기 GemHost 메서드를 작업자 스레드에서 실행하도록 큐에 넣습니다. 큐잉, 백프레셔, 종료 규칙은 GemWorker를 참고합니다.

await using GemHostWorker host = await GemHostWorker.StartAsync(address, transportOptions,
    new GemHostOptions { MaxPendingIds = 64, ItemLimits = limits }, workerOptions, cancellationToken);
await using IAsyncEnumerator<GemEvent> events = host.ReadEventsAsync(cancellationToken).GetAsyncEnumerator();
bool began = false;
HsmsToken pending = default;
while (true)
{
    if (!began && (await host.GetTransportStateAsync(cancellationToken)).State == HsmsConnectionState.Selected)
    {
        pending = await host.BeginCommunicationAsync(cancellationToken);
        began = true;
    }
    if (!await events.MoveNextAsync()) break;
    using GemEvent current = events.Current;
    GemResultInfo? info = current.Result?.GetInfo();
    if (info is not { Kind: GemResultKind.Response } || info.Value.Token != pending) continue;
    if (info.Value.Outcome == GemOutcome.CommunicationEstablished)
        pending = await host.RequestStatusValuesAsync(new uint[] { 1, 2 }, cancellationToken);
    else if (info.Value.Outcome == GemOutcome.ValuesReceived)
        break;
}
await host.StopAsync(cancellationToken);
while (await events.MoveNextAsync()) events.Current.Dispose();
await host.Completion;

멤버

AcknowledgeAlarmAsync

메서드

작업자 스레드에서 실행하도록 GemHost.AcknowledgeAlarm을 큐에 넣습니다.

public Task AcknowledgeAlarmAsync(GemResult result, byte acknowledgement, CancellationToken cancellationToken = default)

작업자는 명령이 끝날 때까지 네이티브 결과를 유지하며, 명령 바이트 예산에서 GemHostOptions.ItemLimits의 메시지 하나 크기를 예약합니다.

매개변수

이름설명
resultW 비트가 설정된, 수신한 S5F1 알람 보고의 결과입니다.
acknowledgement확인 코드(ACKC5)이며 0~63입니다. 0은 수락을 뜻합니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S5F2 응답이 송신 대상으로 수락되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.AcknowledgeAlarm의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: result가 null입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • ObjectDisposedException 예외: result가 해제되었습니다.

AcknowledgeEventAsync

메서드

작업자 스레드에서 실행하도록 GemHost.AcknowledgeEvent를 큐에 넣습니다.

public Task AcknowledgeEventAsync(GemResult result, byte acknowledgement, CancellationToken cancellationToken = default)

큐에 넣은 명령은 완료될 때까지 결과의 네이티브 핸들을 유지하므로, 호출자는 이 메서드가 반환된 뒤 result(또는 이를 보유한 GemEvent)를 해제해도 됩니다. 명령은 작업자의 명령 바이트 예산에서 호스트의 메시지 바이트 한도(아이템 한도의 SecsLimits.MessageBytes)를 예약합니다. 명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemHost.AcknowledgeEvent의 예외로 작업이 실패합니다.

매개변수

이름설명
result결과가 GemOutcome.EventReceived인, 수신한 S6F11의 결과입니다.
acknowledgement확인 코드(ACKC6)이며 0~63입니다. 0은 수락을 뜻합니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S6F12를 보내면 완료되는 작업입니다.

참고

  • ArgumentNullException 예외: result가 null입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • ObjectDisposedException 예외: result가 해제되었습니다.

AreYouOnlineAsync

메서드

S1F1(Are You There)을 보내도록 작업자 스레드에서 실행할 GemHost.AreYouOnline을 큐에 넣습니다.

public Task<HsmsToken> AreYouOnlineAsync(CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.AreYouOnline의 예외를 전달합니다.

매개변수

이름설명
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

CancelProgramGrantAsync

메서드

작업자 스레드에서 실행하도록 GemHost.CancelProgramGrant를 큐에 넣습니다.

public Task CancelProgramGrantAsync(GemResult result, CancellationToken cancellationToken = default)

그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다. 명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다.

매개변수

이름설명
result응답으로 프로그램을 허가한 원래 S7F1 요청 결과입니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

허가가 철회되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.CancelProgramGrant의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: result가 null입니다.
  • ObjectDisposedException 예외: result가 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다.

ChangeConstantsAsync

메서드

작업자 스레드에서 실행하도록 GemHost.ChangeConstants를 큐에 넣습니다.

public Task<HsmsToken> ChangeConstantsAsync(ReadOnlyMemory<GemConstantChange> changes, CancellationToken cancellationToken = default)

S2F16 응답은 나중에 같은 토큰을 가진 이벤트로 도착합니다. 인코딩된 아이템은 명령 바이트 예산에 포함됩니다.

매개변수

이름설명
changes요청 순서대로 나열한 ECID/ECV 쌍입니다. 아이템은 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S2F15 요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.ChangeConstants의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: 변경 항목, 또는 그 ID나 값이 null입니다.
  • ObjectDisposedException 예외: 변경 항목의 아이템이 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 아이템이나 요청 메시지가 GemHostOptions.ItemLimits를 초과하면 PdcommStatus.LimitExceeded이고, 복사하는 동안 changes의 메모리가 수정되었으면 PdcommStatus.Backpressure입니다.

ConfirmProgramReplyAsync

메서드

작업자 스레드에서 실행하도록 GemHost.ConfirmProgramReply를 큐에 넣습니다.

public Task ConfirmProgramReplyAsync(GemResult result, CancellationToken cancellationToken = default)

그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다. 명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다.

매개변수

이름설명
result설치가 확인되지 않은 수신 S7F3 또는 S7F17 요청입니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

저장된 응답을 GemHostWorker.RespondProgramAsync로 보낼 준비가 되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.ConfirmProgramReply의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: result가 null입니다.
  • ObjectDisposedException 예외: result가 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다.

DefineReportsAsync

메서드

작업자 스레드에서 실행하도록 GemHost.DefineReports를 큐에 넣습니다.

public Task<HsmsToken> DefineReportsAsync(uint dataId, ReadOnlyMemory<GemReportSpec> specs, CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemHost.DefineReports의 예외로 작업이 실패합니다. 장비의 S2F34는 나중에 GemWorker.ReadEventsAsync의 GemEvent로 도착합니다.

매개변수

이름설명
dataIdS2F33 요청의 데이터 ID(DATAID)입니다.
specs정의할 보고서입니다. 빈 메모리를 전달하면 장비에 모든 보고서와 그 연결을 삭제하도록 요청합니다. 작업자는 이 메서드가 반환되기 전에 지정 내용을 복사합니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

대기 중인 S2F33/S2F34 거래의 토큰으로 완료되는 작업입니다.

참고

  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 보고서 ID와 변수 ID의 총수가 호스트의 아이템 개수 한도나 메시지 바이트 한도에 들어가는 4바이트 ID 수를 초과하면 PdcommStatus.LimitExceeded입니다.

DeleteProgramsAsync

메서드

작업자 스레드에서 실행하도록 GemHost.DeletePrograms를 큐에 넣습니다.

public Task<HsmsToken> DeleteProgramsAsync(ReadOnlyMemory<SecsItem> ids, CancellationToken cancellationToken = default)

인코딩된 PPID는 명령 바이트 예산에 포함됩니다.

매개변수

이름설명
ids장비에서 삭제할 PPID이거나, 모든 프로그램을 삭제하려면 비워 둡니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S7F17 요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.DeletePrograms의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: ID가 null입니다.
  • ObjectDisposedException 예외: ID가 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다. PPID가 비어 있거나 ASCII 아이템도 바이너리 아이템도 아니면 PdcommStatus.InvalidArgument입니다. 아이템이 GEM 아이템 한도를 초과하거나, PPID가 GemProgramOptions.MaxIdentifierBytes 또는 120바이트보다 길거나, ids의 항목이 GemProgramOptions.MaxRequestIds 또는 GemProgramOptions.MaxPendingIds보다 많거나, PPID를 합한 길이가 GemProgramOptions.MaxPendingIdentifierBytes보다 길면 PdcommStatus.LimitExceeded입니다.

EnableAlarmAsync

메서드

작업자 스레드에서 실행하도록 GemHost.EnableAlarm을 큐에 넣습니다.

public Task<HsmsToken> EnableAlarmAsync(uint id, bool enabled, bool replyExpected, CancellationToken cancellationToken = default)

매개변수

이름설명
id알람 ID(ALID)입니다.
enabled알람 보고를 활성화하려면 true, 비활성화하려면 false입니다.
replyExpectedW 비트를 설정하고 S5F4(Enable/Disable Alarm Acknowledge) 응답을 기대하려면 true입니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S5F3 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.EnableAlarm의 예외를 전달합니다.

EnableEventsAsync

메서드

작업자 스레드에서 실행하도록 GemHost.EnableEvents를 큐에 넣습니다.

public Task<HsmsToken> EnableEventsAsync(bool enabled, ReadOnlyMemory<uint> eventIds, CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemHost.EnableEvents의 예외로 작업이 실패합니다. 장비의 S2F38은 나중에 GemWorker.ReadEventsAsync의 GemEvent로 도착합니다.

매개변수

이름설명
enabled수집 이벤트 활성화/비활성화 플래그(CEED)입니다. 활성화하려면 true, 비활성화하려면 false입니다.
eventIds변경할 수집 이벤트 ID(CEID)이거나, 모든 이벤트이면 비워 둡니다. 작업자는 이 메서드가 반환되기 전에 ID를 복사합니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

대기 중인 S2F37/S2F38 거래의 토큰으로 완료되는 작업입니다.

참고

  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 이벤트 ID 수가 호스트의 아이템 개수 한도나 메시지 바이트 한도에 들어가는 4바이트 ID 수를 초과하면 PdcommStatus.LimitExceeded입니다.

EnhancedRemoteCommandAsync

메서드

작업자 스레드에서 실행하도록 GemHost.EnhancedRemoteCommand를 큐에 넣습니다.

public Task<HsmsToken> EnhancedRemoteCommandAsync(uint dataId, SecsItem objectName, SecsItem name, ReadOnlyMemory<GemCommandParameter> parameters, CancellationToken cancellationToken = default)

명령은 명령 바이트 예산에서 스냅샷의 인코딩 크기만큼을 예약합니다.

매개변수

이름설명
dataId데이터 ID(DATAID)입니다.
objectName객체 지정자(OBJSPEC)입니다. ASCII 아이템입니다.
name원격 명령 이름(RCMD)입니다. 비어 있지 않은 ASCII 아이템이거나 스칼라 정수 아이템입니다.
parameters명령 매개변수(CPNAME과 CEPVAL)입니다. 아이템은 메서드가 반환되기 전에 스냅샷으로 인코딩됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S2F49 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.EnhancedRemoteCommand의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: objectName, name, 매개변수, 또는 매개변수 이름이나 값이 null입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • ObjectDisposedException 예외: 아이템 중 하나가 해제되었습니다.
  • PdcommException 예외: 매개변수 수, 아이템 하나, 또는 아이템 전체의 인코딩 크기가 GemHostOptions.ItemLimits를 초과하면 PdcommStatus.LimitExceeded입니다.

GetProgramAsync

메서드

작업자 스레드에서 실행하도록 GemHost.GetProgram을 큐에 넣습니다.

public Task<SecsItem> GetProgramAsync(SecsItem id, CancellationToken cancellationToken = default)

인코딩된 PPID는 명령 바이트 예산에 포함됩니다.

매개변수

이름설명
id프로세스 프로그램 ID(PPID)입니다. 비어 있지 않은 ASCII 아이템 또는 바이너리 아이템입니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

호출자가 소유하며 해제해야 하는 새 본문 아이템으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.GetProgram의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: id가 null입니다.
  • ObjectDisposedException 예외: id가 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다. PPID가 비어 있거나 ASCII 아이템도 바이너리 아이템도 아니면 PdcommStatus.InvalidArgument입니다. 아이템이 GEM 아이템 한도를 초과하거나 PPID가 GemProgramOptions.MaxIdentifierBytes 또는 120바이트보다 길면 PdcommStatus.LimitExceeded입니다.

GetProgramAtAsync

메서드

작업자 스레드에서 실행하도록 GemHost.GetProgramAt을 큐에 넣습니다.

public Task<GemProgramEntry> GetProgramAtAsync(nuint index, CancellationToken cancellationToken = default)

매개변수

이름설명
index저장소에서 0부터 시작하는 위치입니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

호출자가 소유하며 해제해야 하는 새 항목으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.GetProgramAt의 예외를 전달합니다.

참고

  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다.

GetProgramStateAsync

메서드

작업자 스레드에서 실행하도록 GemHost.GetProgramState를 큐에 넣습니다.

public Task<GemProgramState> GetProgramStateAsync(CancellationToken cancellationToken = default)

매개변수

이름설명
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

프로세스 프로그램 저장소 카운터로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.GetProgramState의 예외를 전달합니다.

참고

  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다.

GrantProgramAsync

메서드

작업자 스레드에서 실행하도록 GemHost.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이 취소되면 작업이 취소되며, 그 밖에는 GemHost.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입니다.

LinkReportsAsync

메서드

작업자 스레드에서 실행하도록 GemHost.LinkReports를 큐에 넣습니다.

public Task<HsmsToken> LinkReportsAsync(uint dataId, ReadOnlyMemory<GemLinkSpec> specs, CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemHost.LinkReports의 예외로 작업이 실패합니다. 장비의 S2F36은 나중에 GemWorker.ReadEventsAsync의 GemEvent로 도착합니다.

매개변수

이름설명
dataIdS2F35 요청의 데이터 ID(DATAID)입니다.
specs추가할 이벤트 연결입니다. 보고서 ID가 없는 이벤트는 장비에 그 이벤트에서 모든 보고서의 연결을 해제하도록 요청합니다. 작업자는 이 메서드가 반환되기 전에 지정 내용을 복사합니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

대기 중인 S2F35/S2F36 거래의 토큰으로 완료되는 작업입니다.

참고

  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 이벤트 ID와 보고서 ID의 총수가 호스트의 아이템 개수 한도나 메시지 바이트 한도에 들어가는 4바이트 ID 수를 초과하면 PdcommStatus.LimitExceeded입니다.

QueryRemoteSpoolingAsync

메서드

작업자 스레드에서 실행하도록 GemHost.QueryRemoteSpooling을 큐에 넣습니다.

public Task<HsmsToken> QueryRemoteSpoolingAsync(CancellationToken cancellationToken = default)

S2F60 응답은 GemWorker.ReadEventsAsync를 통해 도착합니다.

매개변수

이름설명
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S2F59 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.QueryRemoteSpooling의 예외를 전달합니다.

참고

  • PdcommException 예외: 작업자가 GemHostWorker.StartWithSpoolingAsync로 시작되지 않았으면 PdcommStatus.InvalidState입니다.

RemoteCommandAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RemoteCommand를 큐에 넣습니다.

public Task<HsmsToken> RemoteCommandAsync(SecsItem name, ReadOnlyMemory<GemCommandParameter> parameters, CancellationToken cancellationToken = default)

명령은 명령 바이트 예산에서 스냅샷의 인코딩 크기만큼을 예약합니다.

매개변수

이름설명
name원격 명령 이름(RCMD)입니다. 비어 있지 않은 ASCII 아이템이거나 스칼라 정수 아이템입니다.
parameters명령 매개변수(CPNAME과 CPVAL)입니다. 아이템은 메서드가 반환되기 전에 스냅샷으로 인코딩됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S2F41 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RemoteCommand의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: name, 매개변수, 또는 매개변수 이름이나 값이 null입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • ObjectDisposedException 예외: 아이템 중 하나가 해제되었습니다.
  • PdcommException 예외: 매개변수 수, 아이템 하나, 또는 아이템 전체의 인코딩 크기가 GemHostOptions.ItemLimits를 초과하면 PdcommStatus.LimitExceeded입니다.

RequestAlarmListAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestAlarmList를 큐에 넣습니다.

public Task<HsmsToken> RequestAlarmListAsync(ReadOnlyMemory<uint> ids, CancellationToken cancellationToken = default)

매개변수

이름설명
ids나열할 알람 ID(ALID)이거나, 모든 알람을 나열하려면 빈 메모리입니다. ID는 메서드가 반환되기 전에 복사됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S5F5 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RequestAlarmList의 예외를 전달합니다.

참고

  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: ID 수가 GemHostOptions.MaxPendingIds, GemHostOptions.ItemLimits의 아이템 개수, 또는 그 메시지 크기에 들어가는 4바이트 ID 수를 초과하면 PdcommStatus.LimitExceeded입니다.

RequestAnnotatedQueryAsync

메서드

S6F21을 보내도록 작업자 스레드에서 실행할 GemHost.RequestAnnotatedQuery를 큐에 넣습니다.

public Task<HsmsToken> RequestAnnotatedQueryAsync(uint id, CancellationToken cancellationToken = default)

GemHostWorker.RequestReportQueryAsync를 참고합니다. 명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestAnnotatedQuery의 예외를 전달합니다.

매개변수

이름설명
id보고서 ID(RPTID)입니다.
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

참고

  • PdcommException 예외: GemHostOptions.MaxPendingIds가 0이면 PdcommStatus.LimitExceeded입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.

RequestConstantMetadataAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestConstantMetadata를 큐에 넣습니다.

public Task<HsmsToken> RequestConstantMetadataAsync(ReadOnlyMemory<SecsItem> ids, CancellationToken cancellationToken = default)

응답은 나중에 같은 토큰을 가진 이벤트로 도착합니다. 인코딩된 ID는 명령 바이트 예산에 포함됩니다.

매개변수

이름설명
ids장비 상수 ID(ECID)이거나, 모든 상수를 요청하려면 비워 둡니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RequestConstantMetadata의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: ID가 null입니다.
  • ObjectDisposedException 예외: ID가 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: ids의 항목이 GemHostOptions.MaxPendingIds보다 많거나, ID나 요청 메시지가 GemHostOptions.ItemLimits를 초과하면 PdcommStatus.LimitExceeded이고, 복사하는 동안 ids의 메모리가 수정되었으면 PdcommStatus.Backpressure입니다.

RequestConstantValuesAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestConstantValues를 큐에 넣습니다.

public Task<HsmsToken> RequestConstantValuesAsync(ReadOnlyMemory<SecsItem> ids, CancellationToken cancellationToken = default)

응답은 나중에 같은 토큰을 가진 이벤트로 도착합니다. 인코딩된 ID는 명령 바이트 예산에 포함됩니다.

매개변수

이름설명
ids장비 상수 ID(ECID)이거나, 모든 상수를 요청하려면 비워 둡니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RequestConstantValues의 예외를 전달합니다.

참고

  • ArgumentNullException 예외: ID가 null입니다.
  • ObjectDisposedException 예외: ID가 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: ids의 항목이 GemHostOptions.MaxPendingIds보다 많거나, ID나 요청 메시지가 GemHostOptions.ItemLimits를 초과하면 PdcommStatus.LimitExceeded이고, 복사하는 동안 ids의 메모리가 수정되었으면 PdcommStatus.Backpressure입니다.

RequestDirectoryAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestDirectory를 큐에 넣습니다.

public Task<HsmsToken> RequestDirectoryAsync(GemDirectoryKind kind, ReadOnlyMemory<uint> ids, CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자의 폴링 스레드에서 실행됩니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 명령 큐나 바이트 예산이 가득 찼거나 명령 실행 시 이벤트 출력이 막혀 있으면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로, 그 밖에는 GemHost.RequestDirectory의 예외로 작업이 실패합니다. 장비의 응답은 나중에 GemWorker.ReadEventsAsync의 GemEvent로 도착합니다.

매개변수

이름설명
kind요청할 디렉터리입니다.
ids요청할 VID 또는 CEID이거나, 모든 항목을 요청하려면 비워 둡니다. 작업자는 이 메서드가 반환되기 전에 ID를 복사합니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

대기 중인 이름 목록 거래의 토큰으로 완료되는 작업입니다.

참고

  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: kind가 정의된 값이 아니면 PdcommStatus.InvalidArgument이고, ids의 항목이 GemHostOptions.MaxPendingIds보다 많거나 요청이 호스트의 아이템 한도를 초과하게 되면 PdcommStatus.LimitExceeded입니다.

RequestEnabledAlarmListAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestEnabledAlarmList를 큐에 넣습니다.

public Task<HsmsToken> RequestEnabledAlarmListAsync(CancellationToken cancellationToken = default)

매개변수

이름설명
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S5F7 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RequestEnabledAlarmList의 예외를 전달합니다.

RequestEventQueryAsync

메서드

S6F15를 보내도록 작업자 스레드에서 실행할 GemHost.RequestEventQuery를 큐에 넣습니다.

public Task<HsmsToken> RequestEventQueryAsync(uint id, CancellationToken cancellationToken = default)

GemHostWorker.RequestReportQueryAsync를 참고합니다. 명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestEventQuery의 예외를 전달합니다.

매개변수

이름설명
id수집 이벤트 ID(CEID)입니다.
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

참고

  • PdcommException 예외: GemHostOptions.MaxPendingIds가 0이면 PdcommStatus.LimitExceeded입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.

RequestIndividualQueryAsync

메서드

S6F19를 보내도록 작업자 스레드에서 실행할 GemHost.RequestIndividualQuery를 큐에 넣습니다.

public Task<HsmsToken> RequestIndividualQueryAsync(uint id, CancellationToken cancellationToken = default)

GemHostWorker.RequestReportQueryAsync를 참고합니다. 명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestIndividualQuery의 예외를 전달합니다.

매개변수

이름설명
id보고서 ID(RPTID)입니다.
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

참고

  • PdcommException 예외: GemHostOptions.MaxPendingIds가 0이면 PdcommStatus.LimitExceeded입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.

RequestOfflineAsync

메서드

S1F15(Request Off-line)를 보내도록 작업자 스레드에서 실행할 GemHost.RequestOffline을 큐에 넣습니다.

public Task<HsmsToken> RequestOfflineAsync(CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestOffline의 예외를 전달합니다.

매개변수

이름설명
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

RequestOnlineAsync

메서드

S1F17(Request On-line)을 보내도록 작업자 스레드에서 실행할 GemHost.RequestOnline을 큐에 넣습니다.

public Task<HsmsToken> RequestOnlineAsync(CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestOnline의 예외를 전달합니다.

매개변수

이름설명
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

RequestProgramAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestProgram을 큐에 넣습니다.

public Task<HsmsToken> RequestProgramAsync(SecsItem id, CancellationToken cancellationToken = default)

인코딩된 PPID는 명령 바이트 예산에 포함됩니다.

매개변수

이름설명
id프로세스 프로그램 ID(PPID)입니다. 비어 있지 않은 ASCII 아이템 또는 바이너리 아이템입니다. 메서드가 반환되기 전에 인코딩되므로 호출자는 그 뒤에 해제해도 됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S7F5 요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.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입니다.

RequestProgramDirectoryAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestProgramDirectory를 큐에 넣습니다.

public Task<HsmsToken> RequestProgramDirectoryAsync(CancellationToken cancellationToken = default)

매개변수

이름설명
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S7F19 요청의 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RequestProgramDirectory의 예외를 전달합니다.

참고

  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다.

RequestReportQueryAsync

메서드

S6 보고서 조회를 보내도록 작업자 스레드에서 실행할 GemHost.RequestReportQuery를 큐에 넣습니다.

public Task<HsmsToken> RequestReportQueryAsync(GemReportQueryKind kind, uint id, CancellationToken cancellationToken = default)

명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestReportQuery의 예외를 전달합니다.

매개변수

이름설명
kind조회 종류입니다. GemReportQueryKind.Event는 S6F15, GemReportQueryKind.Individual은 S6F19, GemReportQueryKind.Annotated는 S6F21입니다.
id이벤트 조회이면 수집 이벤트 ID(CEID)이고, 그 밖에는 보고서 ID(RPTID)입니다.
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

참고

  • PdcommException 예외: kind가 정의되지 않았으면 PdcommStatus.InvalidArgument이고, GemHostOptions.MaxPendingIds가 0이면 PdcommStatus.LimitExceeded입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.

RequestSpoolConfigurationAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestSpoolConfiguration을 큐에 넣습니다.

public Task<HsmsToken> RequestSpoolConfigurationAsync(ReadOnlyMemory<GemSpoolSelection> selections, CancellationToken cancellationToken = default)

S2F44 응답은 GemWorker.ReadEventsAsync를 통해 도착합니다.

매개변수

이름설명
selections스풀할 스트림입니다. 펑션 목록이 비어 있으면 그 스트림의 모든 펑션을 요청합니다. 이 메서드가 반환되기 전에 복사되며, 각 스트림과 그 펑션은 명령 바이트 예산에 포함됩니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S2F43 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RequestSpoolConfiguration의 예외를 전달합니다.

참고

  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 작업자가 GemHostWorker.StartWithSpoolingAsync로 시작되지 않았으면 PdcommStatus.InvalidState이고, 선택이 GemSpoolHostOptions.MaxStreams 또는 GemSpoolHostOptions.MaxFunctionsPerStream을 초과하면 PdcommStatus.LimitExceeded입니다.

RequestSpooledDataAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RequestSpooledData를 큐에 넣습니다.

public Task<HsmsToken> RequestSpooledDataAsync(GemSpoolCommand command, CancellationToken cancellationToken = default)

S6F24 응답은 GemWorker.ReadEventsAsync를 통해 도착합니다.

매개변수

이름설명
command스풀 데이터 요청 코드(RSDC)입니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

S6F23 요청의 전송 토큰으로 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RequestSpooledData의 예외를 전달합니다.

참고

  • ArgumentOutOfRangeException 예외: command가 정의된 GemSpoolCommand 값이 아닙니다.
  • PdcommException 예외: 작업자가 GemHostWorker.StartWithSpoolingAsync로 시작되지 않았으면 PdcommStatus.InvalidState입니다.

RequestStatusNamesAsync

메서드

상태 변수 이름과 단위를 요청하는 S1F11을 보내도록 작업자 스레드에서 실행할 GemHost.RequestStatusNames를 큐에 넣습니다.

public Task<HsmsToken> RequestStatusNamesAsync(ReadOnlyMemory<uint> ids, CancellationToken cancellationToken = default)

ID는 메서드가 반환되기 전에 복사되며, ID 하나당 명령 바이트 예산에서 4바이트로 계산됩니다. 명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestStatusNames의 예외를 전달합니다.

매개변수

이름설명
ids상태 변수 ID(SVID)입니다. 비어 있으면 모든 변수를 요청합니다.
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

참고

  • PdcommException 예외: ids의 항목이 GemHostOptions.MaxPendingIds보다 많으면 PdcommStatus.LimitExceeded입니다.

RequestStatusValuesAsync

메서드

상태 변수 값을 요청하는 S1F3을 보내도록 작업자 스레드에서 실행할 GemHost.RequestStatusValues를 큐에 넣습니다.

public Task<HsmsToken> RequestStatusValuesAsync(ReadOnlyMemory<uint> ids, CancellationToken cancellationToken = default)

ID는 메서드가 반환되기 전에 복사되며, ID 하나당 명령 바이트 예산에서 4바이트로 계산됩니다. 명령은 끝점을 소유한 작업자 스레드에서 실행됩니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패하며, 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소됩니다. 그 밖에는 GemHost.RequestStatusValues의 예외를 전달합니다.

매개변수

이름설명
ids상태 변수 ID(SVID)입니다. 비어 있으면 모든 변수를 요청합니다.
cancellationToken아직 실행되지 않은 명령을 취소하는 토큰입니다.

반환값

요청을 보내면 그 요청의 토큰으로 완료되는 작업입니다.

참고

  • PdcommException 예외: ids의 항목이 GemHostOptions.MaxPendingIds보다 많으면 PdcommStatus.LimitExceeded입니다.

RespondProgramAsync

메서드

작업자 스레드에서 실행하도록 GemHost.RespondProgram을 큐에 넣습니다.

public Task RespondProgramAsync(GemResult result, GemProgramPutMode mode, byte decision, CancellationToken cancellationToken = default)

그 사이에 result를 해제하더라도 명령이 끝날 때까지 result는 유효합니다. 명령은 명령 바이트 예산에서 GEM 아이템 한도의 SecsLimits.MessageBytes만큼을 예약합니다.

매개변수

이름설명
result결과가 GemOutcome.ProgramReceived인 결과입니다.
modePPID가 이미 있을 때 허가되거나 수신한 프로그램을 저장하는 방식입니다.
decision애플리케이션 결정이며 0은 수락입니다. 코드는 동기 메서드를 참고합니다.
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

응답을 보내면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 찼거나, 이벤트 버퍼가 가득 차서 이벤트 출력이 막힌 동안 명령이 실행되면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.RespondProgram의 예외를 전달합니다. 변경은 설치되었지만 영구 저장을 확인할 수 없으면 PdcommException(PdcommStatus.ProgramUnconfirmed)으로 실패합니다.

참고

  • ArgumentNullException 예외: result가 null입니다.
  • ObjectDisposedException 예외: result가 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다.

ResyncProgramsAsync

메서드

작업자 스레드에서 실행하도록 GemHost.ResyncPrograms를 큐에 넣습니다.

public Task ResyncProgramsAsync(CancellationToken cancellationToken = default)

매개변수

이름설명
cancellationToken명령이 실행되기 전에 명령을 취소하는 토큰입니다.

반환값

부모 디렉터리가 동기화되면 완료되는 작업입니다. 명령 큐나 바이트 예산이 가득 차면 PdcommException(PdcommStatus.Backpressure)으로, 작업자가 명령 수락을 멈춘 뒤에는 ObjectDisposedException으로 작업이 실패합니다. 명령이 실행되기 전에 cancellationToken이 취소되면 작업이 취소되며, 그 밖에는 GemHost.ResyncPrograms의 예외를 전달합니다.

참고

  • PdcommException 예외: 작업자가 프로세스 프로그램 저장소 없이 시작되었으면 PdcommStatus.InvalidState입니다.

SendProgramAsync

메서드

작업자 스레드에서 실행하도록 GemHost.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이 취소되면 작업이 취소되며, 그 밖에는 GemHost.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입니다.

StartAsync

메서드

GEM 호스트 끝점을 만들고 시작하는 폴링 스레드를 시작합니다.

public static Task<GemHostWorker> StartAsync(string address, HsmsOptions transportOptions, GemHostOptions options, HsmsWorkerOptions workerOptions, CancellationToken cancellationToken = default)

address, transportOptions, options 또는 workerOptions가 null이면 ArgumentNullException으로 작업이 실패합니다. workerOptions가 잘못되었거나 HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나(HsmsOptions.MaxFrameBytes에서 14를 뺀 값)와 GEM 결과 예약 하나(GEM 아이템 한도의 SecsLimits.MessageBytes)를 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다. 작업자가 시작되기 전에 cancellationToken이 취소되면 OperationCanceledException으로 실패하고, 작업자 스레드에서 발생한 GemHost.Create의 예외로도 실패합니다. 시작이 실패하면 작업자도 중지됩니다.

매개변수

이름설명
address127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다.
transportOptionsHSMS 전송 옵션입니다.
optionsGEM 호스트 옵션입니다.
workerOptions명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다.
cancellationToken시작을 취소하는 토큰입니다.

반환값

작업자 스레드에서 호스트 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.

StartWithFormattedProgramsAsync

메서드

GEM 호스트 끝점을 만들고, 정형 프로세스 프로그램 서비스를 활성화하고, 시작하는 폴링 스레드를 시작합니다.

public static Task<GemHostWorker> StartWithFormattedProgramsAsync(string address, HsmsOptions transportOptions, GemHostOptions options, HsmsWorkerOptions workerOptions, GemFormattedProgramConfiguration configuration, CancellationToken cancellationToken = default)

작업자 스레드는 GemFormattedProgramConfiguration.Configure로 configuration을 적용하며, 실패하면 호스트를 해제합니다. configuration, options, transportOptions 또는 workerOptions가 null이면 ArgumentNullException으로 작업이 실패합니다(address가 null이면 GemHost.Create가 보고합니다). workerOptions가 잘못되었거나 HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나와 GEM 결과 예약 하나를 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다. 작업자가 시작되기 전에 cancellationToken이 취소되면 OperationCanceledException으로 실패하고, 작업자 스레드에서 발생한 GemHost.Create 또는 GemFormattedProgramConfiguration.Configure의 예외로도 실패합니다. 시작이 실패하면 작업자도 중지됩니다. 정형 프로그램 작업에는 GemWorker.FormattedPrograms를 사용합니다.

매개변수

이름설명
address127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다.
transportOptionsHSMS 전송 옵션입니다.
optionsGEM 호스트 옵션입니다.
workerOptions명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다.
configuration전송이 시작되기 전에 활성화할 정형 프로세스 프로그램 서비스입니다.
cancellationToken시작을 취소하는 토큰입니다.

반환값

작업자 스레드에서 호스트 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.

StartWithProgramsAsync

메서드

초기 프로그램을 로드한 프로세스 프로그램 저장소로 호스트 작업자를 시작합니다.

public static Task<GemHostWorker> StartWithProgramsAsync(string address, HsmsOptions transportOptions, GemHostOptions options, HsmsWorkerOptions workerOptions, GemProgramConfiguration programs, CancellationToken cancellationToken = default)

프로그램 구성은 이 메서드가 반환되기 전에 검증되고 복사됩니다. address, transportOptions, options 또는 workerOptions가 null이면 ArgumentNullException으로 작업이 실패합니다. workerOptions가 잘못되었거나 HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나(HsmsOptions.MaxFrameBytes에서 14를 뺀 값)와 GEM 결과 예약 하나(GEM 아이템 한도의 SecsLimits.MessageBytes)를 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다. 작업자가 시작되기 전에 cancellationToken이 취소되면 OperationCanceledException으로 실패하고, 작업자 스레드에서 발생한 GemHost.Create의 예외로도 실패합니다. 시작이 실패하면 작업자도 중지됩니다.

매개변수

이름설명
address127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다.
transportOptionsHSMS 전송 옵션입니다.
optionsGEM 호스트 옵션입니다.
workerOptions명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다.
programs프로세스 프로그램 옵션, 초기 프로그램, 선택적 저장 경로입니다. 경로가 null이면 저장소를 메모리에 보관합니다.
cancellationToken시작을 취소하는 토큰입니다.

반환값

작업자 스레드에서 호스트 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.

참고

  • ArgumentNullException 예외: options, programs 또는 그 옵션이 null입니다.
  • ArgumentException 예외: 초기 프로그램이 null이거나 저장 경로에 NUL 문자가 있습니다.
  • ObjectDisposedException 예외: 초기 프로그램 아이템이 해제되었습니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.
  • PdcommException 예외: 프로그램 옵션이나 초기 프로그램이 잘못되었거나 프로그램 한도를 초과하면 PdcommStatus.InvalidArgument 또는 PdcommStatus.LimitExceeded입니다.

StartWithProgramsAsync

메서드

빈 프로세스 프로그램 저장소로 호스트 작업자를 시작합니다.

public static Task<GemHostWorker> StartWithProgramsAsync(string address, HsmsOptions transportOptions, GemHostOptions options, HsmsWorkerOptions workerOptions, GemProgramOptions programs, CancellationToken cancellationToken = default)

프로세스 프로그램 거래(스트림 7)는 구성된 저장소가 처리합니다. address, transportOptions, options 또는 workerOptions가 null이면 ArgumentNullException으로 작업이 실패합니다. workerOptions가 잘못되었거나 HsmsWorkerOptions.MaxEventBytes가 프레임 본문 하나(HsmsOptions.MaxFrameBytes에서 14를 뺀 값)와 GEM 결과 예약 하나(GEM 아이템 한도의 SecsLimits.MessageBytes)를 담을 수 없으면 ArgumentOutOfRangeException으로 실패합니다. 작업자가 시작되기 전에 cancellationToken이 취소되면 OperationCanceledException으로 실패하고, 작업자 스레드에서 발생한 GemHost.Create의 예외로도 실패합니다. 시작이 실패하면 작업자도 중지됩니다.

매개변수

이름설명
address127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다.
transportOptionsHSMS 전송 옵션입니다.
optionsGEM 호스트 옵션입니다.
workerOptions명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다.
programs프로세스 프로그램 한도와 허가 정책입니다. 저장소는 메모리에 보관됩니다.
cancellationToken시작을 취소하는 토큰입니다.

반환값

작업자 스레드에서 호스트 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.

참고

  • ArgumentNullException 예외: programs가 null입니다.
  • PdcommException 예외: programs의 허가 정책이 정의되지 않았으면 PdcommStatus.InvalidArgument입니다.

StartWithSpoolingAsync

메서드

끝점이 스풀링 요청을 보낼 수 있는 호스트 작업자를 시작합니다.

public static Task<GemHostWorker> StartWithSpoolingAsync(string address, HsmsOptions transportOptions, GemHostOptions options, HsmsWorkerOptions workerOptions, GemSpoolHostOptions spooling, CancellationToken cancellationToken = default)

작업은 GemHostWorker.StartAsync와 같은 경우에 실패하며, 작업자 스레드에서 발생한 GemHost.ConfigureSpoolHost의 예외로도 실패합니다. 이 방법으로 시작한 작업자만 스풀링 명령을 받습니다.

매개변수

이름설명
address127.0.0.1:5000 같은 숫자 IPv4 또는 IPv6 소켓 주소입니다. 패시브 끝점은 이 주소에 바인딩하고(포트 0이면 빈 포트를 선택), 액티브 끝점은 이 주소로 연결합니다.
transportOptionsHSMS 전송 옵션입니다.
optionsGEM 호스트 옵션입니다.
workerOptions명령 큐, 이벤트 버퍼, 폴링, 종료 옵션입니다.
spooling스풀링 요청의 한도입니다. 이 메서드가 반환되기 전에 복사됩니다.
cancellationToken시작을 취소하는 토큰입니다.

반환값

작업자 스레드에서 호스트 끝점이 만들어지고, 구성되고, 시작된 뒤 시작된 작업자로 완료되는 작업입니다. 패시브 끝점이면 이때부터 GemWorker.LocalAddress를 사용할 수 있습니다.

참고

  • ArgumentNullException 예외: spooling이 null입니다.
  • OperationCanceledException 예외: cancellationToken이 이미 취소되었습니다.