public void ServiceCorrelationDescription_Parse() { var expected = HelperInstance.CreateDefaultDescription(); using (var pc = new PinCollection()) { NativeTypes.FABRIC_SERVICE_CORRELATION_DESCRIPTION[] native = new NativeTypes.FABRIC_SERVICE_CORRELATION_DESCRIPTION[1]; expected.ToNative(pc, ref native[0]); var actual = ServiceCorrelationDescription.CreateFromNative(pc.AddBlittable(native)); HelperInstance.Compare(expected, actual); } }
internal Tuple <uint, IntPtr> ToNativeCorrelations(PinCollection pin) { if (this.Correlations.Count == 0) { return(Tuple.Create((uint)0, IntPtr.Zero)); } var correlationArray = new NativeTypes.FABRIC_SERVICE_CORRELATION_DESCRIPTION[this.Correlations.Count]; for (int i = 0; i < this.Correlations.Count; i++) { this.Correlations[i].ToNative(pin, ref correlationArray[i]); } return(Tuple.Create((uint)this.Correlations.Count, pin.AddBlittable(correlationArray))); }
internal unsafe void ToNative(PinCollection pin, ref NativeTypes.FABRIC_SERVICE_CORRELATION_DESCRIPTION description) { description.ServiceName = pin.AddObject(this.ServiceName); switch (this.Scheme) { case ServiceCorrelationScheme.Affinity: description.Scheme = NativeTypes.FABRIC_SERVICE_CORRELATION_SCHEME.FABRIC_SERVICE_CORRELATION_SCHEME_AFFINITY; break; case ServiceCorrelationScheme.AlignedAffinity: description.Scheme = NativeTypes.FABRIC_SERVICE_CORRELATION_SCHEME.FABRIC_SERVICE_CORRELATION_SCHEME_ALIGNED_AFFINITY; break; case ServiceCorrelationScheme.NonAlignedAffinity: description.Scheme = NativeTypes.FABRIC_SERVICE_CORRELATION_SCHEME.FABRIC_SERVICE_CORRELATION_SCHEME_NONALIGNED_AFFINITY; break; default: ReleaseAssert.Failfast(string.Format(CultureInfo.CurrentCulture, StringResources.Error_InvalidServiceCorrelationScheme_Formatted, this.Scheme)); break; } }