private static byte[] GetPayloadRepresentation(RelayPayload relayPayload) { if (relayPayload == null || relayPayload.ByteArray == null) { return(emptyResponse); } return(encoding.GetBytes(BitConverter.ToString(relayPayload.ByteArray))); }
private Future <RelayOutcome> PutObject <T>(int primaryId, byte[] extendedId, T saveObject) { var typeSetting = base.GetTypeSetting <T>(); if (typeSetting == null) { return(RelayTypeSettings.InvalidTypeFuture <RelayOutcome>()); } var payload = new RelayPayload(typeSetting.TypeId, primaryId, Serializer.Serialize(saveObject, typeSetting.Compress), typeSetting.Compress); var relayMessage = new RelayMessage(typeSetting.TypeId, primaryId, extendedId, MessageType.Save); relayMessage.Payload = payload; return(SendRelayMessage(typeSetting, relayMessage).Convert(replyMessage => replyMessage == null ? RelayOutcome.Success : replyMessage.ResultOutcome ?? RelayOutcome.Success)); }
unsafe private static RelayPayload DeserializePayload(short typeId, int objectId, byte[] bytes, int offset, int length) { if (bytes == null || length == 0) { return null; } int startIdx = (sizeof(PayloadStorage) + offset); int size = length - startIdx; byte[] byteArray = new byte[size]; Array.Copy(bytes, startIdx, byteArray, 0, size); RelayPayload payload = null; fixed (byte* pBytes = &bytes[0]) { if (((PayloadStorage*)pBytes)->Deactivated == false) { payload = new RelayPayload(typeId, objectId, byteArray, ((PayloadStorage*)pBytes)->Compressed, ((PayloadStorage*)pBytes)->TTL, ((PayloadStorage*)pBytes)->LastUpdatedTicks, ((PayloadStorage*)pBytes)->ExpirationTicks); } } return payload; }
/// <summary> /// Serialize Payload Header /// </summary> /// <remarks>Turns out this stuff is actually used for deserialization. Who knew?</remarks> /// <param name="payload"></param> /// <returns></returns> static unsafe private byte[] SerializePayloadHeader(RelayPayload payload) { if (payload == null || payload.ByteArray == null) { return null; } if (Log.IsDebugEnabled) { Log.DebugFormat("SerializePayloadHeader() TypeId={0}, ObjectId={1}, TTL={2}, ExpirationTicks={3}, LastUpadatedTicks={4}, Compressed={5}, ByteArrayLength={6}" , payload.TypeId, payload.Id, payload.TTL, payload.ExpirationTicks, payload.LastUpdatedTicks, payload.Compressed, payload.ByteArray.Length); } int size = sizeof(PayloadStorage); byte[] bytes = new byte[size]; PayloadStorage payloadStorage = new PayloadStorage { Compressed = payload.Compressed, TTL = payload.TTL, LastUpdatedTicks = payload.LastUpdatedTicks, ExpirationTicks = payload.ExpirationTicks, Deactivated = false }; fixed (byte* pBytes = &bytes[0]) { *((PayloadStorage*)pBytes) = payloadStorage; } return bytes; }
private static byte[] SerializePayload(RelayPayload payload) { return SerializePayload(payload, false); }
private static byte[] GetPayloadRepresentation(RelayPayload relayPayload) { if(relayPayload == null || relayPayload.ByteArray == null) { return emptyResponse; } return encoding.GetBytes(BitConverter.ToString(relayPayload.ByteArray)); }