/// <summary> /// Read data from the reliable channel /// </summary> public void ReliableRead(StreamMessageChannel messageChannel) { /* * if (log.IsInfoEnabled) * log.Info("On " + System.Reflection.MethodBase.GetCurrentMethod()); */ try { lock (messageChannel.SyncObject) { object tmp = BaseInteractionMessage.NullBaseInteractionMessage; object msg = serializer.Deserialize(messageChannel.InputStream, ref tmp); if (msg is BaseInteractionMessage) { ReceiveInteraction(msg as BaseInteractionMessage); } } } catch (System.Exception e) { if (log.IsErrorEnabled) { log.Error(" Exception on ReliableRead: " + e.Message); } //throw new RTIinternalError(e.Message); } }
///<summary> /// Reads and returns a BaseIteractionMessage from the specified stream. ///</summary> ///<param name="reader"> the input stream to read from</param> ///<returns> the decoded parameterValue</returns> ///<exception cref="System.IO.IOException"> if an error occurs</exception> public override object Deserialize(HlaEncodingReader reader, ref object msg) { if (msg == null) { msg = new BaseInteractionMessage(); } BaseInteractionMessage decodedValue = msg as BaseInteractionMessage; decodedValue.FederateHandle = reader.ReadHLAinteger64BE(); decodedValue.InteractionIndex = reader.ReadHLAinteger64BE(); decodedValue.FederationExecutionHandle = reader.ReadHLAinteger64BE(); decodedValue.UserSuppliedTag = reader.ReadHLAopaqueData(); decodedValue.InteractionClassHandle = reader.ReadHLAinteger64BE(); IHlaEncodingSerializer serializer = serializerManager.GetSerializer(decodedValue.InteractionClassHandle); if (serializer != null && !this.Equals(serializer)) { object decodedValueTmp = decodedValue; return(serializer.Deserialize(reader, ref decodedValueTmp)); } else { return(decodedValue); } }
/// <summary> /// Reads and returns a HLAparameterHandleValuePair from the specified stream. /// </summary> /// <param name="reader"> the input stream to read from</param> /// <returns> the decoded parameterValue</returns> /// <exception cref="IOException"> if an error occurs</exception> public override object Deserialize(HlaEncodingReader reader, ref object msg) { if (reader.ReadHLAinteger32BE() == MAGIC_NUMBER && reader.ReadHLAinteger32BE() == hlaEncodingModelVersion) { return(baseSerializer.Deserialize(reader, ref msg)); } else { throw new IOException("Wrong message format. Unexpected magic number or version"); } }
///<summary> /// Reads and returns a HLAfederate.HLAGALT from the specified stream. ///</summary> ///<param name="reader"> the input stream to read from</param> ///<param name="dummy"> this parameter is not used</param> ///<returns> the decoded value</returns> ///<exception cref="System.IO.IOException"> if an error occurs</exception> public override object Deserialize(HlaEncodingReader reader, ref object dummy) { ILogicalTime decodedValue; try { IHlaEncodingSerializer serializer = serializerManager.GetSerializer(typeof(ILogicalTime)); decodedValue = (ILogicalTime)serializer.Deserialize(reader, ref dummy); return(decodedValue); } catch (IOException ioe) { throw new FederateInternalError(ioe.ToString()); } }
///<summary> Reads this HLAupdateAttributeValuesMessage from the specified stream.</summary> ///<param name="reader"> the input stream to read from</param> ///<returns> the object</returns> ///<exception cref="System.IO.IOException"> if an error occurs</exception> public override object Deserialize(HlaEncodingReader reader, ref object msg) { HLAupdateAttributeValuesMessage decodedValue; if (!(msg is HLAupdateAttributeValuesMessage)) { decodedValue = new HLAupdateAttributeValuesMessage(); BaseInteractionMessage baseMsg = msg as BaseInteractionMessage; decodedValue.CopyTo(baseMsg); //decodedValue.InteractionClassHandle = baseMsg.InteractionClassHandle; //decodedValue.FederationExecutionHandle = baseMsg.FederationExecutionHandle; //decodedValue.UserSuppliedTag = baseMsg.UserSuppliedTag; } else { decodedValue = msg as HLAupdateAttributeValuesMessage; } object tmp = decodedValue; try { decodedValue = base.Deserialize(reader, ref tmp) as HLAupdateAttributeValuesMessage; decodedValue.ObjectInstanceHandle = reader.ReadHLAinteger64BE(); decodedValue.AttributeHandleValuePairList = new HLAattributeHandleValuePair[reader.ReadHLAinteger32BE()]; for (int i = 0; i < decodedValue.AttributeHandleValuePairList.Length; i++) { tmp = BaseInteractionMessage.NullBaseInteractionMessage; decodedValue.AttributeHandleValuePairList[i] = (HLAattributeHandleValuePair)hlaAttributeHandleValuePairXrtiSerializer.Deserialize(reader, ref tmp); } } catch (System.IO.IOException ioe) { throw new RTIinternalError(ioe.ToString()); } return(decodedValue); }