GkClỉent.cxx Chức năng

Một phần của tài liệu VoIP và báo hiệu số 7 (Trang 136 - 138)

V Lược bỏ số truy cập vùng

Chức năng của moduỉe

11.3.8. GkClỉent.cxx Chức năng

Chức năng

Moduỉe này chứa các hàm để gatekeeper làm việc với các gatekeeper thay thế và các chức năng của gatekeeper con.

Thư viện

GkClient.h/ gk_const.h/ RasSrv.h/ <h323pdu.h>

Các hàm và thư viện

• Lớp GKPendingList: xử lý các yêu cầu của đầu cuối trong danh sách chờ đợi.

• Lớp AltemateGKs: danh sách các gatekeeper thay thế.

- AIternateGKs::Set(const H225_ArrayOf_AlternateGK & agk): hàm này thực hiện chèn thêm một gatekeeper vào danh sách các gatekeeper thay thế của gatekeeper chính (primary gatekeeper ). - AlternateGKs::Get(PIPSocket::Ađđress & gkaddr, WORD &

gkport): xác định gatekeeper thay thế trong danh sách các gatekeeper thay thế.

• Lớp. GkClient; chứa các hàm tạo và xử lý các bản tin liên lạc giữa các gatekeeper,

- GkClient::CheckGKIPVerbose(PIPSocket::Address gkip); kiểm tra địa chỉ IP của gatekéeper nhận được có phải là địa chỉ IP của gatekeeper thay thế không, nếu đúng hàm trả về giá trị TRUE, nếu saỉ hàm trả về giá trị FÁLSE.

- GkClient::CheckRegistration(): kiểm tra việc đăng ký của các đầu cuối gatekeeper, khi danh sách các dầu cuối chờ giải quyết tăng lên có thể vượt quá khả năng của gatekeeper thì gatekeeper thực hiện gửi bản tin RRQ đến các gatekeeper thay thế.

- GkCỉỉent::BuildFulỉRRQ(H225_RegistrationRequest & rrq): cho phép gatekeeper tạo một bản tin RRQ -với đầy đủ các trường của bản tin RRQ mà đầu cuối gửi, để gửi cho gatekeeper thay thế.

- GkClient;:BuildLỉghtWeightRRQ(H225_RegỉstrationRequest & rrq): cho phép gatekeeper tạo một bản tin RRQ -với một số trường cho biết ID của đầu cuối, ID của gatekeeper và keepaỉive, để gửi cho gatekeeper thay thế.

- GkClient::SendRRQ(): gatekeeper thực hiện gửi bản tin RRQ đến các gatekeeper thay thế, nếu tìm không tìm được gatekeeper thay thế thì gatekeeper thực hiện đăng ký lại, nếu tìm được thiết lập cấu hình cho gatekeeper thay thế ở chế độ thường trực hay tạm thời. - GkClient::OnRCF(const H225_RegistrationConfirm & rcf,

PIPSocket::Address gkip): kiểm tra bản tin RCF có phải là bản tin

được gửi từ gatekeeper thay thế không, nếu đúng hàm trả về giá trị TRUE, ngược lại, hàm trả về giá trị FALSE.

- GkClient:;OnRRJ(const H225_RegistrationConfirm & rcf, PIPSocket:;Address gkip); kiểm tra bản tin RRJ có phải là bản tin được gửi từ gatekeeper thay thế không, nếu không đúng địa chỉ IP của gatekeeper thì hàm trả về giá trị FALSE, nếu đúng địa chỉ thì gửi lại bản tin RRQ và hàm trả lại giá trị TRƯE. Tùy theo lý do từ chôl chỉ ra trong bản tin RRJ mà gatekeeper sẽ tạo lại bản tin RRQ với đầy đủ các trường để gửi lại hay là gửi lại RRQ cho các gatekeeper thay thế ở chế độ thường trực (lúc này số lần gửi lại được tàng lên một đơn vị: m_resendssm_gkfailtime +1).

- GkClient::SendưRQO: tạo bản tin URQ gửi cho gatekeeper thay thế. - GkClientURQ::OnưRQ(const H225_UnregistrationRequest & urq,

PIPSocket::Address gkip): khi nhận được bản tin ƯRQ từ gatekeeper khác, hàm sẽ thực hiện kiểm tra xem bản tin này có phải là bản tin đo một trong các gatekeeper thay thế gửi tới không, nếu không phải do gatekeeper thay thế gửi tới hàm trả về giá trị FALSE, ngược lại, gatekeeper thực hiện gửi lại bản tin RRQ và hàm trả về giá trị TRƯE.

- GkClỉent::BuildÂRQ(H225_AdmissionRequest & arq): tạo các trường cho bản tin ARQ- từ bản tin ÂRQ nhận đưỢc từ đầu cuối, gửi cho gatekeeper thay thế; bản tin này không thiết lập chế độ gọi. - GkClỉent::SendARQ(const H225_ÂdmissionRequest & arq, const

endptr & reqEP): thực hiện gửi bản tin ÁRQ cho gatekeeper thay thế. - GkClient::OnACF(const H225_RasMessage & acf_ras, PlPSocket::

Âddress gkip): nếu địa chỉ IP trong bản tin trùng với địa chĩ IP của gatekeeper thay thế thì gatekeeper xử ỉý bản tin này (ProcessACF(acf_ras, reqNum)). Nếu không tìm được gatekeeper thay thế trong danh sách các gatekeeper thay thế thì gatekeeper sẽ bỏ qua bản tin này và thông báo”GK ưnknow ACF, ignore!”

- GkClient::OnARJ(const H225_RasMessage & ai3_ras, PlPSocket:: Àddress gkỉp): nếu địa chỉ ỈP trong bản tin không trùng với địa chỉ IP của các gatekeeper thay thế thì hàm trả về giá trị FALSE. N ^ ợ c lại, hàm này sẽ gọi hàm SenđRRQ để gửi lại bảii tỉn RRQ. - GkClient::OnDRQ(const H225_DisgageRequest & drq, PlPSocket;:

Address gkip): kiểm tra bản tin DRQ nhận được có phải là từ gatekeeper thay thế không.

- GkClient::SendDRQ(H225_RasMessage & drq_ras): gửi DRQ cho các gatekeeper thay thế.

• Các hàm sau thực hiện viết lại cho các số E164 để gatekeeper con định

t u y ế n c á c c u ộ c g ọ i t ừ đ ầ u cu ố i c ủ a n ó đ i đ ế n g B Ì e k e e p e r c h a .

- GkClient;:RewriteE164(H225_ÂliasÂddress & alias, bool fromInternal).

- GkCIient:;RewriteE164(H225_ArrayOf_AliasAdress & aliases, bool fromInternal).

- GkClient::RewriteE164(Q931 & SetupMesg, H225_Setup_UƯIE & Setup, bool ửomlnternaỉ).

11.3.9. M ultỉcastG R Q .cxx

Một phần của tài liệu VoIP và báo hiệu số 7 (Trang 136 - 138)