public long serializedSize()

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;
        }