2010-01-31 27 views
6

Có một chức năng gán trong ổ cắm Boost.Asio, tuy nhiên tôi đang tìm kiếm một cái gì đó giống nhưThả một ổ cắm trong Boost.Asio (đối diện của assign), hoặc không chuyển quyền sở hữu

  • phát hành/hủy chuyển nhượng sẽ chuyển quyền sở hữu trên ổ cắm cho người dùng.

hoặc

  • một số loại assign rằng sẽ không chuyển quyền sở hữu đến socket lớp, vì vậy nó sẽ không đóng nó lại khi bị phá hủy.

Tôi biết về this solution nhưng nó liên quan đến việc sao chép ổ cắm (tức là tạo bộ mô tả mới thay vì phát hành một bộ giải mã).

Có ai biết cách này có thể được thực hiện không?

Edit: Không có tính năng như vậy, mở vé cho Boost.Asio https://svn.boost.org/trac/boost/ticket/3900

+0

Bạn đã thử gán -1 cho ổ cắm khi bạn đã hoàn tất chưa? Tôi chưa bao giờ thử nó, nhưng nó có thể hoạt động. Nó đáng để bắn. – Dan

+0

Tôi không làm điều này sẽ làm việc, bởi vì ổ cắm được dự kiến ​​sẽ đóng ổ cắm cơ bản hiện có khi gán một ổ cắm mới. – Artyom

Trả lời

1

tôi không thể tìm thấy bất kỳ theo cách như vậy trong các tập tin .hpp (Tăng 1,35), vì vậy tôi nghĩ rằng bạn sẽ có để tự vá ASIO và thêm phương thức release(). Khi hoàn tất, bạn có thể giữ bản vá cho chính mình, đăng nó lên trang web của bạn (hoặc tại đây), hoặc gửi lại cho Boost.

Hãy thử danh sách gửi thư Boost. Những người ở đó có thể cho bạn biết liệu một phương pháp như vậy là một ý tưởng tốt hay xấu, và tại sao. Nếu bạn tìm thấy bất cứ điều gì thú vị ở đó, xin vui lòng gửi một bản tóm tắt ở đây.

BTW: Tăng 1,42 đã được phát hành hôm qua.

1

Tôi đã thực hiện điều này trong quá khứ bằng cách sử dụng lệnh gọi hệ thống dup để tạo một bộ mô tả tệp khác.

int fd = dup (old_fd)

socket.assign (... fd)

Nó rõ ràng là không có ngữ nghĩa tương tự như giải phóng các mô tả, nhưng nó hoạt động tốt khi bạn cần phải lớp Boost.Asio trên hoặc dưới một lớp hiện có giả định quyền sở hữu mô tả.

Các vấn đề liên quan