in src/java/org/apache/cassandra/service/accord/serializers/CommandSerializers.java [432:469]
public long serializedSize(StoreParticipants t)
{
Participants<?> hasTouched = t.hasTouched();
Route<?> route = t.route();
Participants<?> owns = t.owns();
Participants<?> executes = t.executes();
Participants<?> touches = t.touches();
boolean hasRoute = route != null;
boolean touchesEqualsHasTouched = touches == hasTouched;
boolean ownsEqualsTouches = owns == touches;
boolean executesIsNull = executes == null;
boolean executesIsOwns = !executesIsNull && executes == owns;
boolean waitsOnIsOwns = !executesIsNull && t.waitsOn() == owns;
boolean encodeSubsets = hasTouched.domain() == Routable.Domain.Key;
Participants<?> superset = !hasRoute ? hasTouched : encodeSubsets ? route.with((Participants)hasTouched) : route;
boolean routeEqualsSuperset = route == superset;
boolean hasTouchedEqualsSuperset = hasTouched == superset;
long size = 1 + KeySerializers.participants.serializedSize(superset);
if (encodeSubsets)
{
if (hasRoute && !routeEqualsSuperset) size += KeySerializers.route.serializedSubsetSize(route, superset);
if (!hasTouchedEqualsSuperset) size += KeySerializers.participants.serializedSubsetSize(hasTouched, superset);
if (!touchesEqualsHasTouched) size += KeySerializers.participants.serializedSubsetSize(touches, superset);
if (!ownsEqualsTouches) size += KeySerializers.participants.serializedSubsetSize(owns, superset);
if (!executesIsNull && !executesIsOwns) size += KeySerializers.participants.serializedSubsetSize(executes, superset);
if (!executesIsNull && !waitsOnIsOwns) size += KeySerializers.participants.serializedSubsetSize(t.waitsOn(), superset);
}
else
{
if (hasRoute && !routeEqualsSuperset) size += KeySerializers.route.serializedSize(route);
if (!hasTouchedEqualsSuperset) size += KeySerializers.participants.serializedSize(hasTouched);
if (!touchesEqualsHasTouched) size += KeySerializers.participants.serializedSize(touches);
if (!ownsEqualsTouches) size += KeySerializers.participants.serializedSize(owns);
if (!executesIsNull && !executesIsOwns) size += KeySerializers.participants.serializedSize(executes);
if (!executesIsNull && !waitsOnIsOwns) size += KeySerializers.participants.serializedSize(t.waitsOn());
}
return size;
}