/* A simple Source and Sink example * The source sends 100 messages to the sink, and waits for acks * Messages are sent via ports */ import eduni.simjava.*; class Source extends Sim_entity { private Sim_port out; private int index; private int state; public static final int SRC_OK = 0; public static final int SRC_BLOCKED = 1; public Source(String name, int index, int state) { super(name); this.index = index; this.state = state; out = new Sim_port("out"); add_port(out); } public void body() { Sim_event ev = new Sim_event(); int i; System.out.println("About to do body S"); for (i=0; i<100; i++) { sim_schedule(out,0.0,0); sim_wait(ev); sim_hold(10.0); sim_trace(1,"C Src loop index is "+i); } System.out.println("Exiting body S"); } } class Sink extends Sim_entity { private Sim_port in; private int index; private int state; public static final int SINK_BLOCKED = 0; public static final int SINK_OK = 1; public Sink(String name, int index, int state) { super(name); this.index = index; this.state = state; in = new Sim_port("in"); add_port(in); } public void body() { Sim_event ev = new Sim_event(); int i = 0; System.out.println("About to do body R"); while(true) { i++; if(i>50) break; sim_wait(ev); sim_hold(1.234); sim_schedule(in,0.0,1); } System.out.println("Exiting body S"); } } class Example1 { public static void main(String args[]) { Sim_system.initialise(); Sim_system.add(new Source("Sender", 1, Source.SRC_OK)); Sim_system.add(new Sink("Receiver", 2, Sink.SINK_OK)); Sim_system.link_ports("Sender", "out", "Receiver", "in"); Sim_system.run(); System.out.println("Exiting main()"); } }