public static CommonMsgHeader Create(string msgType, int msgSize = 0) { System.Diagnostics.Debug.Assert(msgType != null && msgType.Length <= 8); CommonMsgHeader rtnCommonMsgHeader = new CommonMsgHeader { MsgHeader = "VRAGEMS", MsgType = msgType, MsgSize = msgSize }; return(rtnCommonMsgHeader); }
/// <summary> /// Convert from raw data to message. /// Message must be struct with sequential layout having first field "Header" of type "CommonMsg". /// </summary> public static bool ReadMessageFromPtr <TMessage>(ref CommonMsgHeader header, IntPtr data, out TMessage outMsg) where TMessage : IExternalDebugMsg { outMsg = default(TMessage); if (data == IntPtr.Zero || header.MsgSize != Marshal.SizeOf(typeof(TMessage)) || header.MsgType != outMsg.GetTypeStr()) { return(false); } outMsg = (TMessage)Marshal.PtrToStructure(data, typeof(TMessage)); return(true); }
/// <summary> /// Convert from raw data to message. /// Message must be struct with sequential layout having first field "Header" of type "CommonMsg". /// </summary> public static bool ReadMessageFromPtr <TMessage>(ref CommonMsgHeader header, IntPtr data, out TMessage outMsg) where TMessage : IExternalDebugMsg { #if XB1 System.Diagnostics.Debug.Assert(false); //TODO: var tm = new TMessage[1]; outMsg = tm[0];//THIS IS HERE JUST TO RETURN SOMETHING FOR NOW! return(true); #else // !XB1 outMsg = default(TMessage); if (data == IntPtr.Zero || header.MsgSize != Marshal.SizeOf(typeof(TMessage)) || header.MsgType != outMsg.GetTypeStr()) { return(false); } outMsg = (TMessage)Marshal.PtrToStructure(data, typeof(TMessage)); return(true); #endif // !XB1 }