PQCanCelCreate
#Chuẩn bị kết nối mà có thể gửi yêu cầu kèo chấp bóng đá hôm nay.
PGCANCELCONN *
PQCanCelCreate
Tạo APGCANCELCONN
Đối tượng, nhưng nó sẽ không bắt đầu gửi yêu cầu kèo chấp bóng đá hôm nay qua kết nối này. Yêu cầu kèo chấp bóng đá hôm nay có thể được gửi qua kết nối này theo cách chặn bằng cách sử dụngPQCANCELBLOCK
và theo cách không chặn bằng cách sử dụngPQCANCELSTART
. Giá trị trả về có thể được chuyển choPQCANCELSTATUS
Để kiểm tra xemPGCANCELCONN
Đối tượng đã được tạo thành công. ThePGCANCELCONN
Đối tượng là cấu trúc mờ không có nghĩa là được truy cập trực tiếp bởi ứng dụng. Cái nàyPGCANCELCONN
Đối tượng có thể được sử dụng để kèo chấp bóng đá hôm nay chạy trên kết nối ban đầu theo cách an toàn luồng.
Nhiều tham số kết nối của máy khách gốc sẽ được sử dụng lại khi thiết lập kết nối cho yêu cầu kèo chấp bóng đá hôm nay. Điều quan trọng, nếu kết nối ban đầu yêu cầu mã hóa kết nối và/hoặc xác minh máy chủ đích (sử dụngSSLMode
hoặcGSSENCMode
), sau đó kết nối cho yêu cầu kèo chấp bóng đá hôm nay được thực hiện với các yêu cầu tương tự này. Bất kỳ tùy chọn kết nối nào chỉ được sử dụng trong quá trình xác thực hoặc sau khi xác thực của máy khách đều bị bỏ qua, vì các yêu cầu kèo chấp bóng đá hôm nay không yêu cầu xác thực và kết nối được đóng ngay sau khi yêu cầu kèo chấp bóng đá hôm nay được gửi.
Lưu ý rằng khiPQCanCelCreate
Trả về một con trỏ không null, bạn phải gọipqcancelfinish
Khi bạn kết thúc với nó, để xử lý cấu trúc và bất kỳ khối bộ nhớ liên quan nào. Điều này phải được thực hiện ngay cả khi yêu cầu kèo chấp bóng đá hôm nay bỏ không thành công hoặc bị bỏ rơi.
PQCANCELBLOCK
#Yêu cầu máy chủ từ bỏ việc xử lý lệnh hiện tại theo cách chặn.
14292_14343
Yêu cầu được thực hiện trên đã choPGCANCELCONN
, cần được tạo bằngPQCanCelCreate
. Giá trị trả về củaPQCANCELBLOCK
là 1 nếu yêu cầu kèo chấp bóng đá hôm nay được gửi thành công và 0 nếu không. Nếu nó không thành công, thông báo lỗi có thể được truy xuất bằng cách sử dụngPQCancelErrorMessage
.
Công văn thành công của việc kèo chấp bóng đá hôm nay bỏ không đảm bảo rằng yêu cầu sẽ có bất kỳ ảnh hưởng nào. Nếu việc kèo chấp bóng đá hôm nay bỏ có hiệu lực, lệnh bị kèo chấp bóng đá hôm nay sẽ chấm dứt sớm và trả về kết quả lỗi. Nếu kèo chấp bóng đá hôm nay bỏ không thành công (giả sử, vì máy chủ đã hoàn tất xử lý lệnh), thì sẽ không có kết quả hiển thị nào cả.
PQCANCELSTART
PQCANCELPOLL
#Yêu cầu máy chủ từ bỏ việc xử lý lệnh hiện tại theo cách không chặn.
15923_16038
Yêu cầu được thực hiện trên đã choPGCANCELCONN
, cần được tạo bằngPQCANCELCREATE
. Giá trị trả về củaPQCANCELSTART
là 1 nếu yêu cầu kèo chấp bóng đá hôm nay có thể được bắt đầu và 0 nếu không. Nếu nó không thành công, thông báo lỗi có thể được truy xuất bằng cách sử dụngPQCanCelErrorMessage
.
nếuPQCANCELSTART
Thành công, giai đoạn tiếp theo là thăm dò ý kiếnlibpqđể nó có thể tiến hành trình tự kết nối kèo chấp bóng đá hôm nay. Sử dụngPQCancelSocket
Để có được bộ mô tả của ổ cắm bên dưới kết nối cơ sở dữ liệu. (THẬN TRỌNG: Không cho rằng ổ cắm vẫn giống nhauPQCANCELPOLL
cuộc gọi.) Vòng lặp như vậy: nếuTrả về lần cuối
pgres_polling_reading
, đợi cho đến khi ổ cắm sẵn sàng để đọc (như được chỉ ra bởiselect ()
, poll ()
hoặc hàm hệ thống tương tự). Sau đó gọiMột lần nữa. Ngược lại, nếu
Đã trả lại lần cuối
PGRES_POLLING_WRITY
, đợi cho đến khi ổ cắm sẵn sàng để viết, sau đó gọiMột lần nữa. Trên lần lặp đầu tiên, tức là, nếu bạn chưa gọi
, Hành xử như thể nó đã trả về lần cuối
PGRES_POLLING_WRITY
. Tiếp tục vòng lặp này cho đến khireturn
pgres_polling_failed
, Cho biết quy trình kết nối đã thất bại hoặcpgres_polling_ok
, cho biết yêu cầu kèo chấp bóng đá hôm nay đã được gửi thành công.
Công văn thành công của việc kèo chấp bóng đá hôm nay bỏ không đảm bảo rằng yêu cầu sẽ có bất kỳ ảnh hưởng nào. Nếu việc kèo chấp bóng đá hôm nay bỏ có hiệu lực, lệnh bị kèo chấp bóng đá hôm nay sẽ chấm dứt sớm và trả về kết quả lỗi. Nếu kèo chấp bóng đá hôm nay bỏ không thành công (giả sử, vì máy chủ đã hoàn tất xử lý lệnh), thì sẽ không có kết quả hiển thị nào cả.
Bất cứ lúc nào trong quá trình kết nối, trạng thái của kết nối có thể được kiểm tra bằng cách gọiPQCANCELSTATUS
. Nếu cuộc gọi này trả vềConnection_Bad
, sau đó thủ tục kèo chấp bóng đá hôm nay bỏ không thành công; Nếu cuộc gọi trả vềConnection_ok
, sau đó kèo chấp bóng đá hôm nay yêu cầu đã được gửi thành công. Cả hai trạng thái này đều có thể phát hiện như nhau từ giá trị trả về củaPQCANCELPOLL
, được mô tả ở trên. Các trạng thái khác cũng có thể xảy ra trong (và chỉ trong) một thủ tục kết nối không đồng bộ. Chúng chỉ ra giai đoạn hiện tại của quy trình kết nối và có thể hữu ích để cung cấp phản hồi cho người dùng chẳng hạn. Các trạng thái này là:
Connection_allocated
#Đang chờ cuộc gọi đếnPQCANCELSTART
hoặcPQCANCELBLOCK
, để thực sự mở ổ cắm. Đây là trạng thái kết nối ngay sau khi gọiPQCanCelCreate
hoặcPQCANCELRESET
. Không có kết nối nào với máy chủ đã được bắt đầu vào thời điểm này. Để thực sự bắt đầu gửi yêu cầu kèo chấp bóng đá hôm nay sử dụngPQCANCELSTART
hoặcPQCANCELBLOCK
.
Connection_started
#chờ kết nối được thực hiện.
Connection_Made
#Kết nối OK; chờ gửi.
Connection_Awaiting_Response
#Đang chờ phản hồi từ máy chủ.
Connection_SSL_startup
#Đàm phán mã hóa SSL.
Connection_GSS_startup
#Đàm phán mã hóa GSS.
Lưu ý rằng, mặc dù các hằng số này sẽ vẫn (để duy trì khả năng tương thích), một ứng dụng không bao giờ nên dựa vào chúng xảy ra theo một thứ tự cụ thể, hoặc hoàn toàn, hoặc theo trạng thái luôn luôn là một trong những giá trị được ghi nhận này. Một ứng dụng có thể làm điều gì đó như thế này:
Switch (pqcancelstatus (Conn)) Case Connection_started: Phản hồi = "Kết nối ..."; phá vỡ; Case Connection_Made: Phản hồi = "Kết nối với máy chủ ..."; phá vỡ; . . . mặc định: Phản hồi = "Kết nối ...";
TheConnect_Timeout
Tham số kết nối bị bỏ qua khi sử dụngPQCANCELPOLL
; Trách nhiệm của ứng dụng là quyết định xem một lượng thời gian quá mức đã trôi qua. Nếu không thì,PQCANCELSTART
theo sau làPQCANCELPOLL
Vòng lặp tương đương vớiPQCANCELBLOCK
.
PQCANCELSTATUS
#Trả về trạng thái của kết nối kèo chấp bóng đá hôm nay.
23720_23786
Trạng thái có thể là một trong một số giá trị. Tuy nhiên, chỉ có ba trong số này được nhìn thấy bên ngoài một thủ tục kèo chấp bóng đá hôm nay bỏ không đồng bộ:Connection_allocated
, Connection_ok
vàConnection_Bad
. Trạng thái ban đầu của APGCANCELCONN
được tạo thành công bằng cách sử dụngPQCANCELCREATE
làConnection_allocated
. Một yêu cầu kèo chấp bóng đá hôm nay bỏ thành công được gửi đi có trạng tháiConnection_ok
. Một nỗ lực kèo chấp bóng đá hôm nay bỏ không thành công được báo hiệu bởi trạng tháiConnection_Bad
. Trạng thái OK sẽ vẫn như vậy cho đến khipqcancelfinish
hoặcPQCANCELRESET
được gọi.
Xem mục choPQCANCELSTART
Liên quan đến các mã trạng thái khác có thể được trả về.
Công văn thành công của việc kèo chấp bóng đá hôm nay bỏ không đảm bảo rằng yêu cầu sẽ có bất kỳ ảnh hưởng nào. Nếu việc kèo chấp bóng đá hôm nay bỏ có hiệu lực, lệnh bị kèo chấp bóng đá hôm nay sẽ chấm dứt sớm và trả về kết quả lỗi. Nếu kèo chấp bóng đá hôm nay bỏ không thành công (giả sử, vì máy chủ đã hoàn tất xử lý lệnh), thì sẽ không có kết quả hiển thị nào cả.
PQCancelSocket
#Lấy số lượng mô tả tệp của ổ cắm kết nối kèo chấp bóng đá hôm nay vào máy chủ.
25791_25846
Một mô tả hợp lệ sẽ lớn hơn hoặc bằng 0; Kết quả của -1 chỉ ra rằng không có kết nối máy chủ hiện đang mở. Điều này có thể thay đổi do kết quả của việc gọi bất kỳ chức năng nào trong phần này trênPGCANCELCONN
(ngoại trừpqcancelerrormessage
vàPQCancelSocket
chính nó).
PQCanCelErrorMessage
#Trả về thông báo lỗi được tạo gần đây nhất bởi một thao tác trên kết nối kèo chấp bóng đá hôm nay.
26833_26896
Gần như tất cảlibpqCác chức năng lấy APGCANCELCONN
sẽ đặt tin nhắn choPQCanCelErrorMessage
Nếu họ thất bại. Lưu ý rằng bằnglibpqquy ước, một người không trốngPQCanCelErrorMessage
Kết quả có thể bao gồm nhiều dòng và sẽ bao gồm một dòng mới. Người gọi không nên giải phóng kết quả trực tiếp. Nó sẽ được giải phóng khi được liên kếtPGCANCELCONN
Xử lý được chuyển chopqcancelfinish
. Chuỗi kết quả không nên được dự kiến sẽ giữ nguyên trong các hoạt động trênPGCANCELCONN
Cấu trúc.
pqcancelfinish
#Đóng kết nối kèo chấp bóng đá hôm nay (nếu nó chưa hoàn tất gửi yêu cầu kèo chấp bóng đá hôm nay bỏ). Cũng giải phóng bộ nhớ được sử dụng bởiPGCANCELCONN
Đối tượng.
28360_28410
Lưu ý rằng ngay cả khi nỗ lực kèo chấp bóng đá hôm nay bỏ không thành công (như được chỉ ra bởiPQCANCELSTATUS
), Ứng dụng nên gọipqcancelfinish
Để giải phóng bộ nhớ được sử dụng bởiPGCANCELCONN
Đối tượng. ThePGCANCELCONN
Con trỏ không được sử dụng lại saupqcancelfinish
đã được gọi.
PQCANCELRESET
#Đặt lạiPGCANCELCONN
Vì vậy, nó có thể được sử dụng lại cho kết nối kèo chấp bóng đá hôm nay mới.
29465_29514
NếuPGCANCELCONN
Hiện đang được sử dụng để gửi yêu cầu kèo chấp bóng đá hôm nay, sau đó kết nối này được đóng lại. Sau đó nó sẽ chuẩn bịPGCANCELCONN
Đối tượng sao cho nó có thể được sử dụng để gửi yêu cầu kèo chấp bóng đá hôm nay mới.
Điều này có thể được sử dụng để tạo mộtPGCANCELCONN
cho APGConn
và tái sử dụng nó nhiều lần trong suốt vòng đời của bản gốcPGConn
.
Các chức năng này đại diện cho các phương thức gửi các yêu cầu kèo chấp bóng đá hôm nay bỏ cũ hơn. Mặc dù chúng vẫn hoạt động, nhưng chúng không được dùng để không gửi các yêu cầu kèo chấp bóng đá hôm nay theo cách được mã hóa, ngay cả khi kết nối ban đầu được chỉ địnhSSLMode
hoặcGSSENCMode
Để yêu cầu mã hóa. Do đó, các phương thức cũ này không được khuyến khích nhiều khi được sử dụng trong mã mới và thay vào đó nên thay đổi mã hiện có để sử dụng các chức năng mới.
PQGetCancel
#Tạo cấu trúc dữ liệu chứa thông tin cần thiết để kèo chấp bóng đá hôm nay lệnh bằng cách sử dụngPQCANCEL
.
PQGetCancel
Tạo APGCANCEL
Đối tượng đã cho APGConn
Đối tượng kết nối. Nó sẽ trở lạinull
Nếu đã choConn
lànull
hoặc kết nối không hợp lệ. ThePGCANCEL
Đối tượng là cấu trúc mờ không có nghĩa là được truy cập trực tiếp bởi ứng dụng; nó chỉ có thể được truyền choPQCANCEL
hoặcPQFreeCANCEL
.
PQFreeCANCEL
#Giải phóng cấu trúc dữ liệu được tạo bởiPQGetCancel
.
VOID PQFREECANCEL (PGCANT
PQFreeCANCEL
Giải phóng một đối tượng dữ liệu được tạo trước đó bởiPQGetCancel
.
PQCANCEL
#PQCANCEL
là biến thể không phản đối và không an toàn củaPQCANCELBLOCK
, nhưng một thứ có thể được sử dụng một cách an toàn từ trong bộ xử lý tín hiệu.
33733_33798
PQCANCEL
Chỉ tồn tại vì lý do tương thích ngược.PQCANCELBLOCK
nên được sử dụng thay thế. The only benefit thatPQCANCEL
Có rằng nó có thể được gọi một cách an toàn từ trình xử lý tín hiệu, nếuerrbuf
là một biến cục bộ trong trình xử lý tín hiệu. Tuy nhiên, điều này thường không được coi là một lợi ích đủ lớn để có giá trị các vấn đề bảo mật mà chức năng này có.
ThePGCANCEL
Đối tượng chỉ đọc xa nhưPQCANCEL
34697_34801PGConn
Đối tượng.
Giá trị trả về củaPQCANCEL
là 1 nếu yêu cầu kèo chấp bóng đá hôm nay được gửi thành công và 0 nếu không. Nếu không,errbuf
được điền vào thông báo lỗi giải thích.errbuf
Phải là một mảng char có kích thướcerrbufsize
(kích thước được đề xuất là 256 byte).
PQRequestCancel
#PQRequestCancel
là một biến thể không phản đối và không an toàn củaPQCANCELBLOCK
.
int pqrequestCancel (pgconn *Conn);
PQRequestCancel
Chỉ tồn tại vì lý do tương thích ngược.PQCANCELBLOCK
nên được sử dụng thay thế. Không có lợi cho việc sử dụngPQRequestCancel
OverPQCANCELBLOCK
.
yêu cầu máy chủ từ bỏ xử lý lệnh hiện tại. Nó hoạt động trực tiếp trênPGConn
Đối tượng và trong trường hợp lỗi lưu trữ thông báo lỗi trongPGConn
Đối tượng (từ đó có thể được truy xuất bởipqerrormessage
). Mặc dù chức năng là như nhau, nhưng cách tiếp cận này không an toàn trong các chương trình nhiều luồng hoặc trình xử lý tín hiệu, vì có thể ghi đè lênPGConn
của thông báo lỗi sẽ làm rối tung hoạt động hiện đang được kèo chấp bóng đá hôm nay trên kết nối.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.