libpq의 메이저 토토 사이트 시스템은 등록 된 메이저 토토 사이트 핸들러에게 흥미로운 정보를 알리도록 설계되었습니다libpq예를 들어의 생성 또는 파괴와 같은 메이저 토토 사이트pgconn
andpgresult
개체. 주요 사용 사례는 응용 프로그램이 자신의 데이터를 A와 연결할 수 있다는 것입니다.pgconn
또는pgresult
그리고 해당 데이터가 적절한 시간에 제출되도록하십시오.
각 등록 된 메이저 토토 사이트 핸들러는 알려진 두 가지 데이터와 관련이 있습니다.libpq불투명 한void *
포인터.Pass-Strough메이저 토토 사이트 핸들러가 A에 등록 될 때 응용 프로그램에서 제공하는 포인터pgconn
. 패스 스루 포인터는의 삶에 대해 결코 변하지 않습니다pgconn
and allpgresult
s에서 생성 된; 따라서 사용되면 오래 지속되는 데이터를 가리켜 야합니다.인스턴스 데이터포인터, 시작NULL
매번pgconn
andpgresult
. 이 포인터는를 사용하여 조작 할 수 있습니다.pqinstancedata
, PQSETINSTANCETA
, pqresultinstancedata
andpqresultsetinstancedata
함수. 패스 스루 포인터와 달리 A의 인스턴스 데이터pgconn
에 의해 자동으로 상속되지 않습니다pgresult
s에서 생성되었습니다.libpq패스 스루 및 인스턴스 데이터 포인터가 무엇을 가리키는 지 알지 못하고 (아무것도 해방하려고 시도하지 않을 것입니다. 이벤트 핸들러의 책임입니다..
ENUMpgeventid
메이저 토토 사이트 시스템에서 처리하는 메이저 토토 사이트 유형의 이름을 지정합니다. 모든 값은로 시작하는 이름이 있습니다.PGEVT
. 각 메이저 토토 사이트 유형마다 메이저 토토 사이트 핸들러에 전달되는 매개 변수를 전달하는 해당 메이저 토토 사이트 정보 구조가 있습니다.
pgevt_register
#레지스터 메이저 토토 사이트는 발생합니다PQREGISTEREVENTPROC
호출됩니다. 모든 것을 초기화하기에 이상적인 시간입니다instanceata
메이저 토토 사이트 절차가 필요할 수 있습니다. 연결 당 메이저 토토 사이트 핸들러 당 하나의 레지스터 메이저 토토 사이트 만 해고됩니다.
typedef struct
언제pgevt_register
메이저 토토 사이트가 접수되었습니다.evtinfo
포인터가 a에 캐스트해야합니다pgeventRegister *
. 이 구조에는가 포함되어 있습니다.pgconn
Connection_ok
상태; 전화가 보장 보장PQREGISTEREVENTPROC
선을 얻은 직후pgconn
. 실패 코드를 반환 할 때는 모든 정리를 수행해야합니다PGEVT_CONNDESTROY
메이저 토토 사이트가 발송됩니다.
PGEVT_CONNRESET
#연결 재설정 메이저 토토 사이트가 완료되면pqreset
또는pqresetpoll
. 두 경우 모두 메이저 토토 사이트는 재설정이 성공한 경우에만 해고됩니다.PostgreSQLv15 이상. 그러나 이전 버전에서는 성공을 반환하는 것이 중요합니다 (0이 아닌). 연결이 중단됩니다.
typedef struct
언제PGEVT_CONNRESET
메이저 토토 사이트가 접수되었습니다.evtinfo
포인터가 a에 캐스트해야합니다pgeventconnreset *
. 포함되어 있지만pgconn
방금 재설정되었으며 모든 메이저 토토 사이트 데이터는 변경되지 않았습니다. 이 메이저 토토 사이트는 관련된 모든 것을 재설정/새로 고침/요청하는 데 사용해야합니다instanceata
. 메이저 토토 사이트 절차가 처리되지 않더라도PGEVT_CONNRESET
, 여전히 a를받을 것입니다.PGEVT_CONNDESTROY
연결이 닫힌 경우 메이저 토토 사이트.
PGEVT_CONNDESTROY
#연결 파괴 메이저 토토 사이트가 해고되어pqfinish
. libpq 가이 메모리를 관리 할 수 없기 때문에 이벤트 데이터를 올바르게 정리하는 것은 이벤트 절차의 책임입니다.
typedef struct
언제PGEVT_CONNDESTROY
메이저 토토 사이트가 접수되었습니다.evtinfo
포인터가 a에 캐스트해야합니다pgeventconndestroy *
. 이 이벤트는 이전에 해고됩니다pqfinish
다른 정리 수행. 메이저 토토 사이트 절차의 반환 값은 실패를 나타내는 방법이 없기 때문에 무시됩니다pqfinish
. 또한 메이저 토토 사이트 절차 실패는 원치 않는 메모리를 청소하는 과정을 중단해서는 안됩니다.
pgevt_resultcreate
#결과 생성 메이저 토토 사이트는 결과를 포함하여 결과를 생성하는 쿼리 실행 함수에 대한 응답으로pqgetresult
. 이 메이저 토토 사이트는 결과가 성공적으로 생성 된 후에 만 해고됩니다.
typedef struct
언제pgevt_resultcreate
메이저 토토 사이트가 접수되었습니다.evtinfo
포인터가 a에 캐스트해야합니다pgeventresultcreate *
. 그만큼conn
결과를 생성하는 데 사용되는 연결입니다. 이곳은 모든 것을 초기화하기에 이상적인 장소입니다instanceata
결과와 관련이 있어야합니다. 메이저 토토 사이트 절차가 실패하면 (returns zero), 해당 메이저 토토 사이트 절차는 결과의 나머지 수명에 대해 무시됩니다.pgevt_resultcopy
또는pgevt_resultdestroy
이 결과에 대한 이벤트 또는 결과에서 복사.
pgevt_resultcopy
#결과 사본 메이저 토토 사이트가 응답하여 해고됩니다pqcopyresult
. 이 메이저 토토 사이트는 사본이 완료된 후에 만 해고됩니다.pgevt_resultcreate
또는pgevt_resultcopy
소스 결과에 대한 메이저 토토 사이트가 수신됩니다pgevt_resultcopy
메이저 토토 사이트.
typedef struct
언제pgevt_resultcopy
메이저 토토 사이트가 접수되었습니다.evtinfo
포인터가 a에 캐스트해야합니다pgeventresultcopy *
. 그만큼SRC
결과는 복사 된 것입니다dest
결과는 사본 대상입니다. 이 메이저 토토 사이트는의 깊은 사본을 제공하는 데 사용될 수 있습니다.instanceata
이후pqcopyresult
그렇게 할 수 없습니다. 메이저 토토 사이트 절차가 실패하면 (0을 반환), 새로운 결과의 나머지 수명에 대해 해당 메이저 토토 사이트 절차가 무시됩니다.pgevt_resultcopy
또는pgevt_resultdestroy
그 결과 또는 결과에 대한 이벤트 또는 결과로 복사.
pgevt_resultdestroy
#결과 파괴 메이저 토토 사이트는 A에 대한 응답으로 해고되었습니다PQCLEAR
. libpq 가이 메모리를 관리 할 수 없기 때문에 이벤트 데이터를 올바르게 정리하는 것은 이벤트 절차의 책임입니다.
typedef struct
언제pgevt_resultdestroy
메이저 토토 사이트가 접수되었습니다.evtinfo
포인터가 a에 캐스트해야합니다pgeventresultdestroy *
. 이 이벤트는 이전에 해고됩니다PQCLEAR
다른 정리 수행. 메이저 토토 사이트 절차의 반환 값은 실패를 나타내는 방법이 없기 때문에 무시됩니다PQCLEAR
. 또한 메이저 토토 사이트 절차 실패는 원치 않는 메모리를 청소하는 과정을 중단해서는 안됩니다.
pgeventproc
#pgeventproc
| 메이저 토토 사이트 절차, 즉 LIBPQ로부터 메이저 토토 사이트를 수신하는 사용자 콜백 함수에 대한 포인터의 typedef입니다. 메이저 토토 사이트 절차의 서명은이어야합니다.
int eventProc (pgeventid evtid, void *evtinfo, void *passthrough)
theevtid
매개 변수는를 나타냅니다.PGEVT
이벤트가 발생했습니다. 그만큼evtinfo
포인터는 이벤트에 대한 추가 정보를 얻으려면 적절한 구조 유형으로 시전해야합니다. 그만큼Passthrough
매개 변수는 제공된 포인터입니다PQREGISTEREVENTPROC
메이저 토토 사이트 절차가 등록 된 시점. 기능이 성공하면 0이 아닌 값을 반환하고 실패하면 0이됩니다.
특정 메이저 토토 사이트 절차는 한 번만 등록 할 수 있습니다pgconn
. 프로 시저의 주소가 관련 인스턴스 데이터를 식별하기위한 조회 키로 사용되기 때문입니다.
Wind 이 주소 중 하나만 사용되도록 조심해야합니다.libpq의 메이저 토토 사이트-처리 함수, 그렇지 않으면 혼란이 발생합니다. 작동하는 코드 작성의 가장 간단한 규칙은 메이저 토토 사이트 절차가 선언되도록하는 것입니다정적
. 프로 시저의 주소를 자체 소스 파일 외부에서 사용할 수 있어야하는 경우 별도의 기능을 노출하여 주소를 반환합니다.
PQREGISTEREVENTPROC
#메이저 토토 사이트 콜백 절차를 LIBPQ로 등록합니다.
int pqregistereventProc (pgconn *conn, pgeventproc Proc,
메이저 토토 사이트 절차는 각각에 한 번 등록해야합니다pgconn
메이저 토토 사이트를 받고 싶습니다. 연결에 등록 할 수있는 메이저 토토 사이트 절차 수에는 메모리 외에는 제한이 없습니다.
theProc
LIBPQ 메이저 토토 사이트가 발사되면 인수가 호출됩니다. 메모리 주소는 조회에도 사용됩니다instanceata
. 그만큼이름
인수는 오류 메시지에서 메이저 토토 사이트 절차를 참조하는 데 사용됩니다. 이 값은 될 수 없습니다NULL
또는 제로 길이 문자열. 이름 문자열이에 복사됩니다.pgconn
, 따라서 통과 된 것은 오래 지속될 필요는 없습니다. 그만큼Passthrough
포인터가 전달됩니다Proc
메이저 토토 사이트가 발생할 때마다. 이 주장은NULL
.
PQSETINSTANCETA
#연결 설정conn
'sinstanceata
절차Proc
to데이터
. 이것은 성공을 위해 0이 아닌 반환하고 실패로 0이됩니다.Proc
에 제대로 등록되지 않았습니다conn
.)
int pqsetinstanctata (pgconn *conn, pgeventproc proc, void *data);
pqinstancedata
#연결 반환conn
'sinstanceata
절차 관련Proc
또는NULL
없는 경우.
void *pqinstancedata (const pgconn *conn, pgeventproc proc);
pqresultsetinstancedata
#결과 설정instanceata
forProc
to데이터
. 이것은 성공을 위해 0이 아닌 반환하고 실패로 0이됩니다.Proc
결과에 제대로 등록되지 않았습니다.)
int pqresultsetinstancedata (pgresult *res, pgeventproc proc, void *data);
데이터
pqresultMemorySize
, 사용을 할당하지 않는 한pqresultalloc
. (결과가 파괴 될 때 그러한 스토리지를 명시 적으로 제거 할 필요가 없기 때문에 그렇게하는 것이 좋습니다.)
pqresultinstancedata
#결과를 반환합니다instanceata
관련Proc
또는NULL
없는 경우.
void *pqresultinstancedata (const pgresult *res, pgeventproc proc);
LIBPQ 연결 및 결과와 관련된 개인 데이터 관리의 골격 예입니다.
/ * LIBPQ 이벤트에 필수 헤더 (참고 : libpq-fe.h 포함) */
문서에 올바른 것이 없다면 일치하지 않습니다.이 양식문서 문제를보고하려면