forked from akkadotnet/akka.net
-
Notifications
You must be signed in to change notification settings - Fork 4
/
EventEnvelope.cs
64 lines (56 loc) · 2.25 KB
/
EventEnvelope.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//-----------------------------------------------------------------------
// <copyright file="EventEnvelope.cs" company="Akka.NET Project">
// Copyright (C) 2015-2016 Lightbend Inc. <http://www.lightbend.com>
// Copyright (C) 2013-2016 Akka.NET project <https://github.com/akkadotnet/akka.net>
// </copyright>
//-----------------------------------------------------------------------
using System;
namespace Akka.Persistence.Query
{
/// <summary>
/// Event wrapper adding meta data for the events in the result stream of
/// <see cref="IEventsByTagQuery"/> query, or similar queries.
/// </summary>
#if SERIALIZATION
[Serializable]
#endif
public sealed class EventEnvelope : IEquatable<EventEnvelope>
{
public readonly long Offset;
public readonly string PersistenceId;
public readonly long SequenceNr;
public readonly object Event;
public EventEnvelope(long offset, string persistenceId, long sequenceNr, object @event)
{
Offset = offset;
PersistenceId = persistenceId;
SequenceNr = sequenceNr;
Event = @event;
}
public bool Equals(EventEnvelope other)
{
if (ReferenceEquals(this, other)) return true;
if (ReferenceEquals(other, null)) return false;
return Offset == other.Offset
&& PersistenceId == other.PersistenceId
&& SequenceNr == other.SequenceNr
&& Equals(Event, other.Event);
}
public override bool Equals(object obj)
{
return obj is EventEnvelope && Equals((EventEnvelope) obj);
}
public override int GetHashCode()
{
unchecked
{
var hashCode = Offset.GetHashCode();
hashCode = (hashCode*397) ^ (PersistenceId != null ? PersistenceId.GetHashCode() : 0);
hashCode = (hashCode*397) ^ SequenceNr.GetHashCode();
hashCode = (hashCode*397) ^ (Event != null ? Event.GetHashCode() : 0);
return hashCode;
}
}
public override string ToString() => $"EventEnvelope(persistenceId:{PersistenceId}, seqNr:{SequenceNr}, offset:{Offset}, event:{Event})";
}
}