srcrrqs_r 서브루틴

용도

SRC(시스템 리소스 컨트롤러) 요청 헤더를 지정된 버퍼에 복사합니다. SRC 요청 헤더에는 호출자가 이 요청에 대한 응답을 보내는 반환 주소가 포함되어 있습니다.

라이브러리

시스템 리소스 컨트롤러libsrc.a

구문

#include <spc.h>

struct srchdr *srcrrqs_r (Packet, SRChdr)
char * Packet;
struct srchdr * SRChdr;

설명

Srcrrqs_r 서브루틴은 서브시스템이 소스 리소스 컨트롤러로부터 수신한 패킷에 포함된 SRC 요청 헤더(srchdr) 정보를 저장합니다. Srchdr 구조는 spc.h 파일에 정의되어 있습니다. 이 루틴은 SRC에서 수신한 패킷의 수신 프로세스를 완료하기 위해 하위 시스템에서 호출해야 합니다. 서브시스템은 SRC로부터 받는 모든 요청에 응답하기 위해 이 정보가 필요합니다.

이 서브루틴은 스레드 안전 및 재진입이 가능합니다.

매개변수

항목 설명
패킷 서브시스템이 수신한 SRC 요청 패킷을 가리킵니다. 하위 시스템이 메시지 큐에서 패킷을 수신한 경우, 패킷 매개변수는 패킷의 메시지 유형을 지나 요청 정보의 시작 부분을 가리켜야 합니다. 하위 시스템이 소켓에서 정보를 수신한 경우 패킷 매개변수는 소켓에서 수신한 패킷의 시작을 가리킵니다.
SRChdr 호출자가 제공한 버퍼를 가리킵니다. Srcrrqs_r 서브루틴은 요청 헤더를 이 버퍼에 복사합니다.

다음은 하위 시스템 응답 정보를 가져옵니다:

int rc;
struct sockaddr addr;
int addrsz;
struct srcreq packet;
struct srchdr *header;
struct srchdr *rtn_addr;

/*wait to receive packet from SRC daemon */
rc=recvfrom(0, &packet, sizeof(packet), 0, &addr, &addrsz;
/* grab the reply information from the SRC packet */
if (rc>0)
{
  header = (struct srchdr *)malloc(sizeof(struct srchdr));
  rtn_addr = srcrrqs_r(&packet,header);
  if (rtn_addr == NULL)
 {
    /* handle error */
    .
    .
  }

리턴 값

성공적으로 완료되면 srcrq_r 서브루틴은 호출자가 제공한 버퍼의 주소를 반환합니다.

오류 코드

입력 주소 중 하나가 NULL이면 srcrrqs_r 서브루틴은 실패하고 NULL 값을 반환합니다.

항목 설명
SRC_PARM 입력 주소 중 하나가 NULL입니다.