private static HashSet <SecurityIdentity> ReadHashSet(ISerializationContext context) { int count = context.Reader.ReadInt32(); HashSet <SecurityIdentity> value = new HashSet <SecurityIdentity>(); for (int i = 0; i < count; i++) { SecurityIdentity identity = new SecurityIdentity(); identity.ReadBinary(context); value.Add(identity); } return(value); }
public void ReadBinary(ISerializationContext context) { Readers = ReadHashSet(context); Writers = ReadHashSet(context); Owners = ReadHashSet(context); // Read column security rules RestrictedColumns = new SecuredSet <List <string> >(); int columnRuleCount = context.Reader.ReadInt32(); for (int i = 0; i < columnRuleCount; ++i) { SecurityIdentity identity = new SecurityIdentity(); identity.ReadBinary(context); List <string> columnsSecured = new List <string>(); int columnsForGroupCount = context.Reader.ReadInt32(); for (int j = 0; j < columnsForGroupCount; ++j) { columnsSecured.Add(context.Reader.ReadString()); } RestrictedColumns[identity] = columnsSecured; } // Read row security rules RowRestrictedUsers = new SecuredSet <string>(); int rowRuleCount = context.Reader.ReadInt32(); for (int i = 0; i < rowRuleCount; ++i) { SecurityIdentity identity = new SecurityIdentity(); identity.ReadBinary(context); string filterForIdentity = context.Reader.ReadString(); RowRestrictedUsers[identity] = filterForIdentity; } }