Skip to content

Commit

Permalink
moving connection to parent constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
tanneberger committed Oct 23, 2024
1 parent 50c59b8 commit 6e87086
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 11 deletions.
6 changes: 6 additions & 0 deletions include/reactor-uc/connection.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ typedef struct PhysicalConnection PhysicalConnection;
typedef struct DelayedConnection DelayedConnection;
typedef struct Port Port;
typedef struct Output Output;
typedef struct ConnectionList ConnectionList;

struct Connection {
Trigger super;
Expand All @@ -30,6 +31,11 @@ void Connection_ctor(Connection *self, TriggerType type, Reactor *parent, Port *
EventPayloadPool *payload_pool, void (*prepare)(Trigger *, Event *), void (*cleanup)(Trigger *),
void (*trigger_downstreams)(Connection *, const void *, size_t));

struct ConnectionList {
Connection **connections;
size_t connections_size;
};

struct LogicalConnection {
Connection super;
};
Expand Down
6 changes: 3 additions & 3 deletions include/reactor-uc/macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@
Connection *conns_out[NumConnsOut]; \
} PortName;

#define DEFINE_OUTPUT_PORT_CTOR(PortName, SourceSize, NumConnsOut) \
void PortName##_ctor(PortName *self, Reactor *parent) { \
Output_ctor(&self->super, parent, self->sources, SourceSize, (Connection **)&self->conns_out, NumConnsOut); \
#define DEFINE_OUTPUT_PORT_CTOR(PortName, SourceSize) \
void PortName##_ctor(PortName *self, Reactor *parent, Connection **conn_out, size_t conn_num) { \
Output_ctor(&self->super, parent, self->sources, SourceSize, conn_out, conn_num); \
}

#define DEFINE_INPUT_PORT_STRUCT(PortName, EffectSize, BufferType, NumConnsOut) \
Expand Down
9 changes: 5 additions & 4 deletions test/unit/delayed_conn_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ DEFINE_TIMER_STRUCT(Timer1, 1)
DEFINE_TIMER_CTOR_FIXED(Timer1, 1, 0, MSEC(10))
DEFINE_REACTION_STRUCT(Sender, 0, 0);
DEFINE_OUTPUT_PORT_STRUCT(Out, 1, 1)
DEFINE_OUTPUT_PORT_CTOR(Out, 1, 1)
DEFINE_OUTPUT_PORT_CTOR(Out, 1)

typedef struct {
Reactor super;
Expand All @@ -27,13 +27,13 @@ DEFINE_REACTION_BODY(Sender, 0) {
}
DEFINE_REACTION_CTOR(Sender, 0);

void Sender_ctor(Sender *self, Reactor *parent, Environment *env) {
void Sender_ctor(Sender *self, Reactor *parent, Environment *env, Connection** conn_out, size_t conn_out_num) {
self->_reactions[0] = (Reaction *)&self->reaction;
self->_triggers[0] = (Trigger *)&self->timer;
Reactor_ctor(&self->super, "Sender", env, parent, NULL, 0, self->_reactions, 1, self->_triggers, 1);
Sender_Reaction0_ctor(&self->reaction, &self->super);
Timer1_ctor(&self->timer, &self->super);
Out_ctor(&self->out, &self->super);
Out_ctor(&self->out, &self->super, conn_out, conn_out_num);

TIMER_REGISTER_EFFECT(self->timer, self->reaction);

Expand Down Expand Up @@ -87,11 +87,12 @@ typedef struct {
Conn1 conn;

Reactor *_children[2];
Connection *_conn_sender_out[1];
} Main;

void Main_ctor(Main *self, Environment *env) {
self->_children[0] = &self->sender.super;
Sender_ctor(&self->sender, &self->super, env);
Sender_ctor(&self->sender, &self->super, env, self->_conn_sender_out, 1);

self->_children[1] = &self->receiver.super;
Receiver_ctor(&self->receiver, &self->super, env);
Expand Down
9 changes: 5 additions & 4 deletions test/unit/port_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ DEFINE_TIMER_STRUCT(Timer1, 1)
DEFINE_TIMER_CTOR_FIXED(Timer1, 1, 0, SEC(1))
DEFINE_REACTION_STRUCT(Sender, 0, 0)
DEFINE_OUTPUT_PORT_STRUCT(Out, 1, 1)
DEFINE_OUTPUT_PORT_CTOR(Out, 1, 1)
DEFINE_OUTPUT_PORT_CTOR(Out, 1)

typedef struct {
Reactor super;
Expand All @@ -27,13 +27,13 @@ DEFINE_REACTION_BODY(Sender, 0) {
}
DEFINE_REACTION_CTOR(Sender, 0)

void Sender_ctor(Sender *self, Reactor *parent, Environment *env) {
void Sender_ctor(Sender *self, Reactor *parent, Environment *env, Connection** conn_out, size_t conn_num) {
self->_reactions[0] = (Reaction *)&self->reaction;
self->_triggers[0] = (Trigger *)&self->timer;
Reactor_ctor(&self->super, "Sender", env, parent, NULL, 0, self->_reactions, 1, self->_triggers, 1);
Sender_Reaction0_ctor(&self->reaction, &self->super);
Timer1_ctor(&self->timer, &self->super);
Out_ctor(&self->out, &self->super);
Out_ctor(&self->out, &self->super, conn_out, conn_num);
TIMER_REGISTER_EFFECT(self->timer, self->reaction);
OUTPUT_REGISTER_SOURCE(self->out, self->reaction);
}
Expand Down Expand Up @@ -85,11 +85,12 @@ typedef struct {
Conn1 conn;

Reactor *_children[2];
Connection *_conn_sender_out[1];
} Main;

void Main_ctor(Main *self, Environment *env) {
self->_children[0] = &self->sender.super;
Sender_ctor(&self->sender, &self->super, env);
Sender_ctor(&self->sender, &self->super, env, self->_conn_sender_out, 1);

self->_children[1] = &self->receiver.super;
Receiver_ctor(&self->receiver, &self->super, env);
Expand Down

0 comments on commit 6e87086

Please sign in to comment.