internal static Contracts.ChassisResponse SendBladeSerialData(int bladeId, string sessionToken, byte[] data) { Contracts.ChassisResponse response = new Contracts.ChassisResponse(); response.completionCode = Contracts.CompletionCode.Failure; Tracer.WriteInfo("BladeSerialSessionMetadata.SendBladeSerialData({0})", bladeId); // If there is NOT an already existing Blade serial session (indicated by a invalid bladeId and a invalid sessionToken), return failure with appropriate completion code if (CompareAndSwapMetadata(ConfigLoaded.InactiveBladePortId, ConfigLoaded.InactiveBladeSerialSessionToken, ConfigLoaded.InactiveBladePortId, ConfigLoaded.InactiveBladeSerialSessionToken) == CompletionCode.Success) { Tracer.WriteError("SendBladeSerialData({0}): Send failed because of no active session.", bladeId); response.completionCode = Contracts.CompletionCode.NoActiveSerialSession; return(response); } // If this bladeid currently holds the serial session, update the timestamp else return failure if (BladeSerialSessionMetadata.CompareAndSwapMetadata(bladeId, sessionToken, bladeId, sessionToken, DateTime.Now) != CompletionCode.Success) { response.completionCode = Contracts.CompletionCode.SerialSessionActive; return(response); } BladeSerialSession currSession = new BladeSerialSession((byte)bladeId); SerialStatusPacket serialStatus = new SerialStatusPacket(); serialStatus = currSession.sendSerialData(data); if (serialStatus.completionCode != CompletionCode.Success) { Tracer.WriteError("BladeSerialSessionMetadata.SendBladeSerialData({0}): Error in BladeSerialSession.sendSerialData()", bladeId); return(response); } response.completionCode = Contracts.CompletionCode.Success; return(response); }
internal static Contracts.ChassisResponse SendBladeSerialData(int bladeId, string sessionToken, byte[] data) { Contracts.ChassisResponse response = new Contracts.ChassisResponse(); response.completionCode = Contracts.CompletionCode.Failure; Tracer.WriteInfo("BladeSerialSessionMetadata.SendBladeSerialData({0})", bladeId); // If there is NOT an already existing Blade serial session (indicated by a invalid bladeId and a invalid sessionToken), return failure with appropriate completion code if (CompareAndSwapMetadata(ConfigLoaded.InactiveBladePortId, ConfigLoaded.InactiveBladeSerialSessionToken, ConfigLoaded.InactiveBladePortId, ConfigLoaded.InactiveBladeSerialSessionToken) == CompletionCode.Success) { Tracer.WriteError("SendBladeSerialData({0}): Send failed because of no active session.", bladeId); response.completionCode = Contracts.CompletionCode.NoActiveSerialSession; return response; } // If this bladeid currently holds the serial session, update the timestamp else return failure if (BladeSerialSessionMetadata.CompareAndSwapMetadata(bladeId, sessionToken, bladeId, sessionToken, DateTime.Now) != CompletionCode.Success) { response.completionCode = Contracts.CompletionCode.SerialSessionActive; return response; } BladeSerialSession currSession = new BladeSerialSession((byte)bladeId); SerialStatusPacket serialStatus = new SerialStatusPacket(); serialStatus = currSession.sendSerialData(data); if (serialStatus.completionCode != CompletionCode.Success) { Tracer.WriteError("BladeSerialSessionMetadata.SendBladeSerialData({0}): Error in BladeSerialSession.sendSerialData()", bladeId); return response; } response.completionCode = Contracts.CompletionCode.Success; return response; }