/** * 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); }
/** * Gibt einen String zurrück, der diesen Datensatz beschreibt. * * @return String, der diesen Datensatz beschreibt */ public final String parseToString() { String str = "Empfangsanmeldeinformationen:\n"; str += _baseSubscriptionInfo.toString() + "\n"; str += "Nachgeliefert Flag : " + getDelayedDataFlag() + "\n"; str += "Delta Daten Flag : " + getDeltaDataFlag() + "\n"; str += "Empfangsapplikation : " + isReceiver() + "\n"; str += "Senkeapplikation : " + isDrain() + "\n"; return str; }
/** * 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; }
/** * Lesen eines Datensatzes vom übergegebenen DataInputStream * * @param in DataInputStream * @throws IOException, wenn ein Fehler beim Lesen des Streams auftritt. */ public final void read(DataInputStream in) throws IOException { _baseSubscriptionInfo = new BaseSubscriptionInfo(); _baseSubscriptionInfo.read(in); boolean delayedDataFlag = in.readBoolean(); boolean deltaDataFlag = in.readBoolean(); _receiveOptions = new ReceiveOptions(deltaDataFlag, delayedDataFlag); boolean applikationStatus = in.readBoolean(); _receiverRole = new ReceiverRole(applikationStatus); int size = (int) in.readByte(); if (size > 0) { byte[] ignoredAttributesIndicator = new byte[size]; for (int i = 0; i < size; ++i) { ignoredAttributesIndicator[i] = in.readByte(); } } }