Skip to content

Commit

Permalink
Fix mistake in serialize/deserialize funciotn in posix example
Browse files Browse the repository at this point in the history
  • Loading branch information
erlingrj committed Nov 2, 2024
1 parent b1dd100 commit 0c763cb
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 38 deletions.
5 changes: 3 additions & 2 deletions examples/posix/federated/receiver.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ typedef struct {
lf_ret_t deserialize_msg_t(void *user_struct, const unsigned char *msg_buf, size_t msg_size) {
msg_t *msg = user_struct;
memcpy(&msg->size, msg_buf, sizeof(msg->size));
memcpy(msg->msg, msg_buf + sizeof(msg->size), sizeof(msg->size));
memcpy(msg->msg, msg_buf + sizeof(msg->size), msg->size);

return LF_OK;
}
Expand All @@ -36,7 +36,8 @@ DEFINE_REACTION_BODY(Receiver, 0) {
Receiver *self = (Receiver *)_self->parent;
Environment *env = self->super.env;
In *inp = &self->inp;
printf("Input triggered @ %" PRId64 " with %s\n", env->get_elapsed_logical_time(env), inp->value.msg);
printf("Input triggered @ %" PRId64 " with %s size %d\n", env->get_elapsed_logical_time(env), inp->value.msg,
inp->value.size);
}
DEFINE_REACTION_CTOR(Receiver, 0)

Expand Down
35 changes: 1 addition & 34 deletions examples/posix/federated/sender.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ size_t serialize_msg_t(const void *user_struct, size_t user_struct_size, unsigne
const msg_t *msg = user_struct;

memcpy(msg_buf, &msg->size, sizeof(msg->size));
memcpy(msg_buf + sizeof(msg->size), msg->msg, sizeof(msg->size));
memcpy(msg_buf + sizeof(msg->size), msg->msg, msg->size);

return sizeof(msg->size) + msg->size;
}
Expand Down Expand Up @@ -62,39 +62,6 @@ void Sender_ctor(Sender *self, Reactor *parent, Environment *env, Connection **c
OUTPUT_REGISTER_SOURCE(self->out, self->reaction);
}

DEFINE_REACTION_STRUCT(Receiver, 0, 1)
DEFINE_INPUT_PORT_STRUCT(In, 1, msg_t, 0)
DEFINE_INPUT_PORT_CTOR(In, 1, msg_t, 0)

typedef struct {
Reactor super;
Receiver_Reaction0 reaction;
In inp;
int cnt;
Reaction *_reactions[1];
Trigger *_triggers[1];
} Receiver;

DEFINE_REACTION_BODY(Receiver, 0) {
Receiver *self = (Receiver *)_self->parent;
Environment *env = self->super.env;
In *inp = &self->inp;
printf("Input triggered @ %" PRId64 " with %s size %i\n", env->get_elapsed_logical_time(env), inp->value.msg,
inp->value.size);
}
DEFINE_REACTION_CTOR(Receiver, 0)

void Receiver_ctor(Receiver *self, Reactor *parent, Environment *env) {
self->_reactions[0] = (Reaction *)&self->reaction;
self->_triggers[0] = (Trigger *)&self->inp;
Reactor_ctor(&self->super, "Receiver", env, parent, NULL, 0, self->_reactions, 1, self->_triggers, 1);
Receiver_Reaction0_ctor(&self->reaction, &self->super);
In_ctor(&self->inp, &self->super);

// Register reaction as an effect of in
INPUT_REGISTER_EFFECT(self->inp, self->reaction);
}

DEFINE_FEDERATED_OUTPUT_CONNECTION(ConnSender, msg_t, 1)

typedef struct {
Expand Down
4 changes: 2 additions & 2 deletions src/federated.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ void FederatedConnectionBundle_handle_start_tag_signal(FederatedConnectionBundle
// a TaggedMessage available.
void FederatedConnectionBundle_handle_tagged_msg(FederatedConnectionBundle *self, const FederateMessage *_msg) {
const TaggedMessage *msg = &_msg->message.tagged_message;
LF_DEBUG(FED, "Callback on FedConnBundle %p for message with tag=%" PRId64 ":%" PRIu32, self, msg->tag.time,
msg->tag.microstep);
LF_DEBUG(FED, "Callback on FedConnBundle %p for message of size=%u with tag=%" PRId64 ":%" PRIu32, self,
msg->payload.size, msg->tag.time, msg->tag.microstep);
assert(((size_t)msg->conn_id) < self->inputs_size);
lf_ret_t ret;
FederatedInputConnection *input = self->inputs[msg->conn_id];
Expand Down
2 changes: 2 additions & 0 deletions src/platform/posix/tcp_ip_channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,8 @@ const FederateMessage *TcpIpChannel_receive(NetworkChannel *untyped_self) {
if (bytes_read < 0) {
LF_ERR(NET, "[%s] Error recv from socket %d", self->server ? "server" : "client", errno);
continue;
} else if (bytes_read == 0) {
continue;
}

self->read_index += bytes_read;
Expand Down

0 comments on commit 0c763cb

Please sign in to comment.