indexing description: "Send/parse message to/from wire" license: "MIT license (see ../../license.txt)" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" deferred class P2P_WIRE_MESSAGE inherit P2P_SOCKET_EXTENSIONS rename make as esocket_make, make_non_blocking as esocket_make_non_blocking, send_buffer as esocket_send_buffer export {NONE} all {ANY} buffer, buffer_length end feature {NONE} -- Initialization make_from_message (a_message: P2P_MESSAGE) is -- Create require Message_valid: a_message /= Void do message := a_message ensure Message_set: message = a_message end make_from_wire (medium: NETWORK_SOCKET; max_wait: INTEGER; a_checker: like checker) is -- Create message from wire -- `a_checker' is a query function returning true whenever reading process should stop. require Medium_valid: medium /= Void and medium.exists Timeout_valid: max_wait >= 0 deferred ensure Status_set: has_failed = (message = Void) end feature -- Access message: P2P_MESSAGE is_processable (version: INTEGER): BOOLEAN is -- Is `version' processable? deferred end feature -- Basic operations send_to_buffer (version: INTEGER) is -- Send format representation of message in given version to wire buffer require Message_set: message /= Void Version_processable: is_processable (version) deferred end send_buffer (medium: NETWORK_SOCKET) is -- Send buffer to wire require Medium_valid: medium /= Void and medium.is_writable deferred end feature -- Status report has_failed: BOOLEAN last_error_message: STRING end