Skip to content

Commit

Permalink
Merge pull request #369 from lf-lang/address_query_reply
Browse files Browse the repository at this point in the history
Add address query reply message
  • Loading branch information
Jakio815 authored Feb 27, 2024
2 parents ec3b6de + f5dfc32 commit ee6244f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 11 deletions.
4 changes: 2 additions & 2 deletions core/federated/RTI/rti_remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -787,8 +787,8 @@ void handle_address_query(uint16_t fed_id) {
// the port number because it has not yet received an MSG_TYPE_ADDRESS_ADVERTISEMENT message
// from this federate. In that case, it will respond by sending -1.

// Response message is also of type MSG_TYPE_ADDRESS_QUERY.
buffer[0] = MSG_TYPE_ADDRESS_QUERY;
// Response message is MSG_TYPE_ADDRESS_QUERY_REPLY.
buffer[0] = MSG_TYPE_ADDRESS_QUERY_REPLY;

// Encode the port number.
federate_info_t *remote_fed = GET_FED_INFO(remote_fed_id);
Expand Down
6 changes: 3 additions & 3 deletions core/federated/federate.c
Original file line number Diff line number Diff line change
Expand Up @@ -1751,7 +1751,7 @@ void lf_connect_to_federate(uint16_t remote_federate_id) {
"Failed to read the requested port number for federate %d from RTI.",
remote_federate_id);

if (buffer[0] != MSG_TYPE_ADDRESS_QUERY) {
if (buffer[0] != MSG_TYPE_ADDRESS_QUERY_REPLY) {
// Unexpected reply. Could be that RTI has failed and sent a resignation.
if (buffer[0] == MSG_TYPE_FAILED) {
lf_print_error_and_exit("RTI has failed.");
Expand Down Expand Up @@ -2699,8 +2699,8 @@ int lf_send_tagged_message(environment_t* env,
if (message_type == MSG_TYPE_P2P_TAGGED_MESSAGE) {
lf_print_warning("Failed to send message to %s. Dropping the message.", next_destination_str);
} else {
lf_print_error_system_failure("Failed to send message to %s. Connection lost to the RTI.",
next_destination_str);
lf_print_error_system_failure("Failed to send message to %s with error code %d (%s). Connection lost to the RTI.",
next_destination_str, errno, strerror(errno));
}
}
LF_MUTEX_UNLOCK(&lf_outbound_socket_mutex);
Expand Down
20 changes: 14 additions & 6 deletions include/core/federated/network/net_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -525,12 +525,20 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* Byte identifying a address query message, sent by a federate to RTI
* to ask for another federate's address and port number.
* The next two bytes are the other federate's ID.
* The reply from the RTI will a port number (an int32_t), which is -1
*/
#define MSG_TYPE_ADDRESS_QUERY 13

/**
* Byte identifying a address query message reply, sent by a RTI to a federate
* to reply with a remote federate's address and port number.
* The reply from the RTI will be a port number (an int32_t), which is -1
* if the RTI does not know yet (it has not received MSG_TYPE_ADDRESS_ADVERTISEMENT from
* the other federate), followed by the IP address of the other
* federate (an IPV4 address, which has length INET_ADDRSTRLEN).
* The next four bytes (or sizeof(int32_t)) will be the port number.
* The next four bytes (or sizeof(in_addr), which is uint32_t) will be the ip address.
*/
#define MSG_TYPE_ADDRESS_QUERY 13
#define MSG_TYPE_ADDRESS_QUERY_REPLY 14

/**
* Byte identifying a message advertising the port for the TCP connection server
Expand All @@ -540,7 +548,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* The sending federate will not wait for a response from the RTI and assumes its
* request will be processed eventually by the RTI.
*/
#define MSG_TYPE_ADDRESS_ADVERTISEMENT 14
#define MSG_TYPE_ADDRESS_ADVERTISEMENT 15

/**
* Byte identifying a first message that is sent by a federate directly to another federate
Expand All @@ -551,7 +559,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* federate does not expect this federate or federation to connect, it will respond
* instead with MSG_TYPE_REJECT.
*/
#define MSG_TYPE_P2P_SENDING_FED_ID 15
#define MSG_TYPE_P2P_SENDING_FED_ID 16

/**
* Byte identifying a message to send directly to another federate.
Expand All @@ -562,7 +570,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* The four bytes after will be the length of the message.
* The ramaining bytes are the message.
*/
#define MSG_TYPE_P2P_MESSAGE 16
#define MSG_TYPE_P2P_MESSAGE 17

/**
* Byte identifying a timestamped message to send directly to another federate.
Expand All @@ -579,7 +587,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* The next four bytes will be the microstep of the sender.
* The ramaining bytes are the message.
*/
#define MSG_TYPE_P2P_TAGGED_MESSAGE 17
#define MSG_TYPE_P2P_TAGGED_MESSAGE 18

////////////////////////////////////////////////
/**
Expand Down

0 comments on commit ee6244f

Please sign in to comment.