private byte[] SerializeActorSelectionMessage(ActorSelectionMessage sel)
{
SelectionEnvelope.Builder builder = SelectionEnvelope.CreateBuilder();
Serializer serializer = system.Serialization.FindSerializerFor(sel.Message);
builder.SetEnclosedMessage(ByteString.CopyFrom(serializer.ToBinary(sel.Message)));
builder.SetSerializerId(serializer.Identifier);
if (serializer.IncludeManifest)
{
builder.SetMessageManifest(ByteString.CopyFromUtf8(sel.Message.GetType().AssemblyQualifiedName));
}
foreach (SelectionPathElement element in sel.Elements)
{
element.Match()
.With<SelectChildName>(m => builder.AddPattern(BuildPattern(m.Name, PatternType.CHILD_NAME)))
.With<SelectChildPattern>(
m => builder.AddPattern(BuildPattern(m.PatternStr, PatternType.CHILD_PATTERN)))
.With<SelectParent>(m => builder.AddPattern(BuildPattern(null, PatternType.PARENT)));
}
return builder.Build().ToByteArray();
}