/** * Schreiben eines Datensatzes in den übergegebenen DataOutputStream * * @param out DataOutputStream * @throws IOException, wenn ein Fehler beim Schreiben in den Ausgabestream auftritt. */ public final void write(DataOutputStream out) throws IOException { _baseSubscriptionInfo.write(out); out.writeBoolean(_receiveOptions.withDelayed()); out.writeBoolean(_receiveOptions.withDelta()); out.writeBoolean(_receiverRole.isDrain()); // Ein Byte Länge des nicht mehr benötigten Indikatorbitfelds out.writeByte(0); }
/** * Aktualisiert diese Empfangsanmeldeinformationen durch Vereinigung mit einer weiteren * Empfangsanmeldeinformation * * @param receiveSubscriptionInfo Weitere Empfangsanmeldeinformation * @return <code>true<code> bei Änderung dieser Empfangsanmeldeinformation, </code>false</code> * sonst */ public final boolean updateSubscriptionInfo(ReceiveSubscriptionInfo receiveSubscriptionInfo) { BaseSubscriptionInfo _baseSubscriptionInfo = receiveSubscriptionInfo.getBaseSubscriptionInfo(); ReceiveOptions options = receiveSubscriptionInfo.getReceiveOptions(); ReceiverRole role = receiveSubscriptionInfo.getReceiverRole(); boolean changed = false; if ((_baseSubscriptionInfo == null) || (options == null) || (role == null)) { return false; } if (_baseSubscriptionInfo.getObjectID() != this._baseSubscriptionInfo.getObjectID()) { return false; } boolean delayed = getDelayedDataFlag(); boolean delta = getDeltaDataFlag(); if (!delayed) { if (options.withDelayed()) { delayed = true; changed = true; } } if (delta) { if (!options.withDelta()) { delta = false; changed = true; } } if (changed) { _receiveOptions = new ReceiveOptions(delta, delayed); } // wenn receiverRole Empfänger ist, dann darf keine Senke angemeldet werden // wenn receiverRole Senke ist, dann darf keine weitere Senke angemeldet werden if (_receiverRole.isReceiver() || _receiverRole.isDrain()) { if (role.isDrain()) { // zu einem Empfänger oder einer Senke soll noch eine Senke angemeldet werden throw new IllegalStateException( "Ungültige Anmeldung. Zu einem Empfänger oder einer Senke darf keine weitere Senke angemeldet werden."); } } return changed; }
/** * Gibt an, ob die Applikation als Senke für dieses Datum angemeldet ist oder nicht. * * @return <code>true:</code>Applikation ist als Senke angemeldet, <code>false:</code>Applikation * ist nicht als Senke angemeldet. */ public final boolean isDrain() { return _receiverRole.isDrain(); }