2011-08-17 36 views
8

Tôi mới vào QuickFix và tôi có một số câu hỏi cơ bản về QuickFix:QuickFix Thư viện C++ - câu hỏi chung về ThreadedSocketInitiator

1) Xét rằng cùng một lúc, sẽ có chỉ có một phiên sửa chữa giữa chấp nhận và một người khởi xướng. Tôi không hoàn toàn hiểu được mục đích của các lớp ThreadedSocketInitiator và ThreadedSocketAcceptor.

Hoặc các lớp này tồn tại để tạo điều kiện cho nhiều phiên, trong đó nhiều "người khởi xướng" có thể nói chuyện với những người chấp nhận khác nhau và ngược lại?

2) QuickFIX có một số loại tin nhắn kiên trì không, ví dụ: điều gì sẽ xảy ra nếu tin nhắn bị mất khi chuyển tiếp? Động cơ có xử lý việc gửi lại tin nhắn không?

Trả lời

5

1) Quickfix sử dụng 1 chuỗi cho mỗi phiên. Động cơ bạn có thể giả định là toàn bộ quá trình.

ThreadedSocketInitiator được sử dụng khi bạn muốn sử dụng công cụ làm ứng dụng khách. Bạn kết nối với một máy chủ khác và truyền tải thông điệp. Bạn khởi tạo các kết nối, do đó tên khởi tạo. Bạn sinh ra một chuỗi mới cho mỗi phiên bạn thiết lập với một máy chủ.

ThreadedSocketAcceptor được sử dụng khi bạn muốn sử dụng công cụ làm máy chủ. Bạn chấp nhận các kết nối do đó chấp nhận. Khi bạn thiết lập một phiên mới với một khách hàng, một luồng mới sẽ được sinh ra cho phiên cụ thể đó.

Hãy nhớ rằng tất cả các phiên đều có một id duy nhất để phân biệt giữa nhiều phiên. Máy chủ có thể có nhiều phiên với cùng một ứng dụng khách và ngược lại.

2) Có. Nhưng người nhận phải khởi tạo một thông báo ResendRequest để làm cho người gửi gửi lại. Nó sẽ tự động thực hiện bằng cách kiểm tra cờ độ trễ trong tệp cấu hình, nếu nó chưa nhận được trả lời cho một thư đã gửi.

+0

Cảm ơn. Nếu tôi bắt đầu hai phiên từ phía của tôi với hai đối tượng SocketInitiator, ngay cả sau đó Quickfix sẽ bắt đầu hai phiên (và có thể, hai chủ đề nội bộ). Vậy, ThreadedSocketInitiator khác với SocketInitiator như thế nào? – Lazylabs

+0

@Lazylabs - SocketInitiator là một mô hình chuỗi đơn, ThreadedSocketInitiator là một mô hình đa luồng. – DumbCoder

+0

Có thực sự là một chủ đề riêng biệt cho các thông điệp toApp và fromApp. Tuy nhiên có sử dụng rộng rãi khóa mutex, do đó, ứng dụng người dùng có thể sử dụng mỗi phiên làm luồng logic. – jaybny