private static byte[] GetPayloadRepresentation(RelayPayload relayPayload)
        {
            if (relayPayload == null || relayPayload.ByteArray == null)
            {
                return(emptyResponse);
            }

            return(encoding.GetBytes(BitConverter.ToString(relayPayload.ByteArray)));
        }
Beispiel #2
0
        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));
		}