/** * Instantiates a new component definition. */ protected ComponentDefinition() { core = new JavaComponent(this); control = core.createControlPort(); loopback = core.createNegativePort(LoopbackPort.class); onSelf = loopback.getPair(); loggingCtxInit(); }
@Override public void connectTimer(ComponentProxy proxy, Component c) { proxy.connect(timerC.getPositive(Timer.class), c.getNegative(Timer.class), Channel.TWO_WAY); } }));
@Override public void doTrigger(KompicsEvent event, int wid, ChannelCore<?> channel) { //System.out.println(this.getClass()+": "+event+" triggert from "+channel); if (event instanceof Request) { Request request = (Request) event; request.pushPathElement(channel); } pair.deliver(event, wid); }
@SuppressWarnings("unchecked") private boolean executeEvent(PatternExtractor<?, ?> event, MatchedHandler<?, ?, ?> handler) { try { PatternExtractor<?, Object> pe = (PatternExtractor<?, Object>) event; MatchedHandler<?, Object, PatternExtractor<?, Object>> h = (MatchedHandler<?, Object, PatternExtractor<?, Object>>) handler; h.handle(pe.extractValue(), pe); return false; // no state change } catch (Throwable throwable) { logger().error("Handling an event caused a fault! Might be handled later...", throwable); markSubtreeAs(State.FAULTY); escalateFault(new Fault(throwable, this, event)); return true; // state changed } }
@SuppressWarnings("unchecked") private boolean executeEvent(KompicsEvent event, Handler<?> handler) { try { ((Handler<KompicsEvent>) handler).handle(event); return false; // no state change } catch (Throwable throwable) { logger().error("Handling an event caused a fault! Might be handled later...", throwable); markSubtreeAs(State.FAULTY); escalateFault(new Fault(throwable, this, event)); return true; // state changed } }
public void handle(ChordLookupRequest event) { // System.err.println("LOOKUP_REQUEST"); trigger(event, chord.getPositive(ChordStructuredOverlay.class)); } };
@Override protected boolean exec() { try { run(); return false; // } catch(InterruptedException ex) { // Thread.currentThread().interrupt(); // return false; // } } catch (Throwable e) { Kompics.getFaultHandler().handle(new Fault(e, this, null)); throw e; } } }
@Override public void disconnect() { this.destroy(); positivePort.removeChannel(this); negativePort.removeChannel(this); }
@Override public void uncaughtException(Thread t, Throwable e) { Kompics.getFaultHandler().handle(new Fault(e, null, null)); }
public void eventReceived(PortCore<?> port, KompicsEvent event, int wid) { //System.err.println("Received event " + event + " on " + port.getPortType().portTypeClass + " work " + workCount.get()); port.enqueue(event); readyPorts.offer(port); int wc = workCount.getAndIncrement(); if (wc == 0) { schedule(wid); } }
private boolean deliverToSubscribers(KompicsEvent event, int wid, Class<? extends KompicsEvent> eventType) { //Kompics.logger.debug("{}: trying to deliver {} to subscribers...", owner, event); if (handlers.hasSubscription(event)) { doDeliver(event, wid); return true; } //Kompics.logger.debug("{}: Couldn't deliver {}, no matching subscribers", owner.getComponent(), event); return false; }
@Override public <P extends PortType> Channel<P> connect(PortCore<P> positivePort, PortCore<P> negativePort) { UniDirectionalChannel<P> c = new UniDirectionalChannel(positivePort, negativePort, direction); positivePort.addChannel(c); negativePort.addChannel(c); return c; }
@Override public <P extends PortType> Channel<P> connect(PortCore<P> positivePort, PortCore<P> negativePort) { BiDirectionalChannel<P> c = new BiDirectionalChannel(positivePort, negativePort); positivePort.addChannel(c); negativePort.addChannel(c); return c; }
protected void schedule(int wid) { if (scheduler == null) { scheduler = Kompics.getScheduler(); } scheduler.schedule(this, wid); }
@Override public <P extends PortType> Positive<P> getPositive(Class<P> portType) { return ComponentDefinition.this.getComponentCore().getPositive(portType); }
@Override public <P extends PortType> Negative<P> getNegative(Class<P> portType) { return ComponentDefinition.this.getComponentCore().getNegative(portType); }
@Override public void connectTimer(ComponentProxy proxy, Component c) { proxy.connect(timerC.getPositive(Timer.class), c.getNegative(Timer.class), Channel.TWO_WAY); } }));
public void handle(ChordNeighborsRequest event) { // System.err.println("NEIGHBORS_REQUEST"); trigger(event, chord.getPositive(ChordStatus.class)); } };
@Override public void doTrigger(KompicsEvent event, int wid, ComponentCore component) { //System.out.println(this.getClass()+": "+event+" triggert from "+component); if (event instanceof Request) { Request request = (Request) event; request.pushPathElement(component); } pair.deliver(event, wid); }