public void Read(AerospikeClient client, BatchPolicy policy, string ns, string set, string accountId) { Record record = client.Join(policy, new Key(ns, set, accountId), new Join("tickers", ns, set)); if (record == null) { throw new Exception("Failed to read: " + accountId); } this.accountId = accountId; byte[] positionsBytes = (byte[])record.GetValue("positions"); Record[] records = (Record[])record.GetValue("tickers"); if (positionsBytes != null) { MemoryStream ms = new MemoryStream(positionsBytes); BinaryReader reader = new BinaryReader(ms); int count = reader.ReadInt32(); positions = new List<Position>(count); for (int i = 0; i < count; i++) { positions.Add(new Position(reader, records[i])); } } else { positions = new List<Position>(0); } }