public async Task <IList <Uri> > GetGateways() { var expressionValues = new Dictionary <string, AttributeValue> { { $":{SiloInstanceRecord.DEPLOYMENT_ID_PROPERTY_NAME}", new AttributeValue(this.clusterId) }, { $":{SiloInstanceRecord.STATUS_PROPERTY_NAME}", new AttributeValue { N = INSTANCE_STATUS_ACTIVE } }, { $":{SiloInstanceRecord.PROXY_PORT_PROPERTY_NAME}", new AttributeValue { N = "0" } } }; var expression = $"{SiloInstanceRecord.DEPLOYMENT_ID_PROPERTY_NAME} = :{SiloInstanceRecord.DEPLOYMENT_ID_PROPERTY_NAME} " + $"AND {SiloInstanceRecord.STATUS_PROPERTY_NAME} = :{SiloInstanceRecord.STATUS_PROPERTY_NAME} " + $"AND {SiloInstanceRecord.PROXY_PORT_PROPERTY_NAME} > :{SiloInstanceRecord.PROXY_PORT_PROPERTY_NAME}"; var records = await storage.ScanAsync <Uri>(this.options.TableName, expressionValues, expression, gateway => { return(SiloAddress.New( new IPEndPoint( IPAddress.Parse(gateway[SiloInstanceRecord.ADDRESS_PROPERTY_NAME].S), int.Parse(gateway[SiloInstanceRecord.PROXY_PORT_PROPERTY_NAME].N)), int.Parse(gateway[SiloInstanceRecord.GENERATION_PROPERTY_NAME].N)).ToGatewayUri()); }); return(records); }
/// <summary> /// Read one row from the remider table /// </summary> /// <param name="grainRef">grain ref to locate the row </param> /// <returns> Return the RemiderTableData if the rows were read successfully </returns> public async Task <ReminderTableData> ReadRows(GrainReference grainRef) { var expressionValues = new Dictionary <string, AttributeValue> { { $":{SERVICE_ID_PROPERTY_NAME}", new AttributeValue(serviceId.ToString()) }, { $":{GRAIN_REFERENCE_PROPERTY_NAME}", new AttributeValue(grainRef.ToKeyString()) } }; try { var expression = $"{SERVICE_ID_PROPERTY_NAME} = :{SERVICE_ID_PROPERTY_NAME} AND {GRAIN_REFERENCE_PROPERTY_NAME} = :{GRAIN_REFERENCE_PROPERTY_NAME}"; var records = await storage.ScanAsync(TABLE_NAME_DEFAULT_VALUE, expressionValues, expression, Resolve).ConfigureAwait(false); return(new ReminderTableData(records)); } catch (Exception exc) { logger.Warn(ErrorCode.ReminderServiceBase, $"Intermediate error reading reminder entry {Utils.DictionaryToString(expressionValues)} from table {TABLE_NAME_DEFAULT_VALUE}.", exc); throw; } }