本文整理汇总了C#中MembershipEntry类的典型用法代码示例。如果您正苦于以下问题:C# MembershipEntry类的具体用法?C# MembershipEntry怎么用?C# MembershipEntry使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MembershipEntry类属于命名空间,在下文中一共展示了MembershipEntry类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UpdateIAmAlive
public void UpdateIAmAlive(MembershipEntry entry)
{
Tuple<MembershipEntry, string> data;
siloTable.TryGetValue(entry.SiloAddress, out data);
if (data == null) return;
data.Item1.IAmAliveTime = entry.IAmAliveTime;
siloTable[entry.SiloAddress] = new Tuple<MembershipEntry, string>(data.Item1, NewETag());
}
示例2: UpdateRow
public Task<bool> UpdateRow(MembershipEntry entry, string etag, TableVersion tableVersion)
{
if (logger.IsVerbose) logger.Verbose("UpdateRow entry = {0}, etag = {1}, table version = {2}", entry.ToFullString(), etag, tableVersion);
bool result = table.Update(entry, etag, tableVersion);
if (result == false)
logger.Info(ErrorCode.MembershipGrainBasedTable3,
"Update of {0}, eTag {1}, table version {2} failed. Table now is {3}",
entry.ToFullString(), etag, tableVersion, table.ReadAll());
return Task.FromResult(result);
}
示例3: InsertRow
public Task<bool> InsertRow(MembershipEntry entry, TableVersion tableVersion)
{
if (logger.IsVerbose) logger.Verbose("InsertRow entry = {0}, table version = {1}", entry.ToFullString(), tableVersion);
bool result = table.Insert(entry, tableVersion);
if (result == false)
logger.Info(ErrorCode.MembershipGrainBasedTable2,
"Insert of {0} and table version {1} failed. Table now is {2}",
entry.ToFullString(), tableVersion, table.ReadAll());
return Task.FromResult(result);
}
示例4: Update
public bool Update(MembershipEntry entry, string etag, TableVersion version)
{
Tuple<MembershipEntry, string> data;
siloTable.TryGetValue(entry.SiloAddress, out data);
if (data == null) return false;
if (!data.Item2.Equals(etag) || !tableVersion.VersionEtag.Equals(version.VersionEtag)) return false;
siloTable[entry.SiloAddress] = new Tuple<MembershipEntry, string>(
entry, lastETagCounter++.ToString(CultureInfo.InvariantCulture));
tableVersion = new TableVersion(version.Version, NewETag());
return true;
}
示例5: InsertRow
public async Task<bool> InsertRow(MembershipEntry entry, TableVersion tableVersion)
{
try
{
if (logger.IsVerbose) logger.Verbose("InsertRow entry = {0}, table version = {1}", entry.ToFullString(), tableVersion);
var tableEntry = Convert(entry, tableManager.DeploymentId);
var versionEntry = tableManager.CreateTableVersionEntry(tableVersion.Version);
bool result = await tableManager.InsertSiloEntryConditionally(
tableEntry, versionEntry, tableVersion.VersionEtag);
if (result == false)
logger.Warn(ErrorCode.AzureTable_22, String.Format("Insert failed due to contention on the table. Will retry. Entry {0}, table version = {1}", entry.ToFullString(), tableVersion));
return result;
}
catch (Exception exc)
{
logger.Warn(ErrorCode.AzureTable_23, String.Format("Intermediate error inserting entry {0} tableVersion {1} to the table {2}.",
entry.ToFullString(), (tableVersion == null ? "null" : tableVersion.ToString()), tableManager.TableName), exc);
throw;
}
}
示例6: CreateSuspectingSilosParameter
private static IDbDataParameter CreateSuspectingSilosParameter(IDbCommand command, MembershipEntry membershipEntry, ParameterDirection direction)
{
//TODO: Refactor the database to take DATETIME2(7) and change the data type here accordingly.
var parameter = command.CreateParameter();
parameter.ParameterName = "suspectingSilos";
parameter.DbType = DbType.String;
parameter.Direction = direction;
if(membershipEntry.SuspectTimes != null)
{
var siloList = new StringBuilder();
bool first = true;
foreach(var tuple in membershipEntry.SuspectTimes)
{
if(!first)
{
siloList.Append('|');
}
siloList.Append(tuple.Item1.ToParsableString());
first = false;
}
parameter.Value = siloList.ToString();
}
else
{
parameter.Value = DBNull.Value;
}
return parameter;
}
示例7: UpdateMembershipRowAsync
/// <summary>
/// Updates membership row data.
/// </summary>
/// <param name="deploymentId">The deployment with which to insert row.</param>
/// <param name="etag">The etag of which to use to check if the membership data being updated is not stale.</param>
/// <param name="membershipEntry">The membership data to used to update database.</param>
/// <param name="version">The membership version used to update database.</param>
/// <returns><em>TRUE</em> if update SUCCEEDS. <em>FALSE</em> ot</returns>
internal async Task<bool> UpdateMembershipRowAsync(string deploymentId, string etag, MembershipEntry membershipEntry, TableVersion version)
{
var ret = await storage.ReadAsync(orleansQueries.UpdateMembershipKey, command =>
{
var siloIdParameter = CreateDeploymentIdParameter(command, deploymentId);
command.Parameters.Add(siloIdParameter);
var versionEtagParameter = CreateVersionEtagParameter(command, version.VersionEtag);
command.Parameters.Add(versionEtagParameter);
//The insert membership row part.
var etagParameter = CreateEtagParameter(command, etag);
command.Parameters.Add(etagParameter);
var addressParameter = CreateAddressParameter(command, membershipEntry.SiloAddress.Endpoint.Address);
command.Parameters.Add(addressParameter);
var portParameter = CreatePortParameter(command, membershipEntry.SiloAddress.Endpoint.Port);
command.Parameters.Add(portParameter);
var generationParameter = CreateGenerationParameter(command, membershipEntry.SiloAddress.Generation);
command.Parameters.Add(generationParameter);
var hostNameParameter = CreateHostNameParameter(command, membershipEntry.HostName);
command.Parameters.Add(hostNameParameter);
var statusParameter = CreateStatusParameter(command, membershipEntry.Status);
command.Parameters.Add(statusParameter);
var proxyPortParameter = CreateProxyPortParameter(command, membershipEntry.ProxyPort);
command.Parameters.Add(proxyPortParameter);
var roleNameParameter = CreateRoleNameParameter(command, membershipEntry.RoleName);
command.Parameters.Add(roleNameParameter);
var instanceNameParameter = CreateInstanceNameParameter(command, membershipEntry.InstanceName);
command.Parameters.Add(instanceNameParameter);
var updateZoneParameter = CreateUpdateZoneParameter(command, membershipEntry.UpdateZone);
command.Parameters.Add(updateZoneParameter);
var faultZoneParameter = CreateFaultZoneParameter(command, membershipEntry.FaultZone);
command.Parameters.Add(faultZoneParameter);
var startTimeParameter = CreateStartTimeParameter(command, membershipEntry.StartTime);
command.Parameters.Add(startTimeParameter);
var iAmAliveTimeParameter = CreateIAmAliveTimeParameter(command, membershipEntry.IAmAliveTime);
command.Parameters.Add(iAmAliveTimeParameter);
var suspectingSilosParameter = CreateSuspectingSilosParameter(command, membershipEntry);
command.Parameters.Add(suspectingSilosParameter);
var suspectingTimesParameter = CreateSuspectingTimesParameter(command, membershipEntry);
command.Parameters.Add(suspectingTimesParameter);
}, (selector, resultSetCount, cancellationToken) => { return Task.FromResult(selector.GetBoolean(0)); }).ConfigureAwait(continueOnCapturedContext: false);
return ret.First();
}
示例8: ArgumentNullException
Task<bool> IMembershipTable.UpdateRow(MembershipEntry entry, string etag, TableVersion tableVersion)
{
if (logger.IsVerbose3) logger.Verbose3(string.Format("IMembershipTable.UpdateRow called with entry {0}, etag {1} and tableVersion {2}.", entry, etag, tableVersion));
//The "tableVersion" parameter should always exist when updating a row as Init should
//have been called and membership version created and read. This is an optimization to
//not to go through all the way to database to fail a conditional check (which does
//exist for the sake of robustness) as mandated by Orleans membership protocol.
//Likewise, no update can be done without membership entry or an etag.
if (entry == null)
{
if (logger.IsVerbose) logger.Verbose("SqlMembershipTable.UpdateRow aborted due to null check. MembershipEntry is null.");
throw new ArgumentNullException("entry");
}
if (etag == null)
{
if (logger.IsVerbose) logger.Verbose("SqlMembershipTable.UpdateRow aborted due to null check. etag is null.");
throw new ArgumentNullException("etag");
}
if (tableVersion == null)
{
if (logger.IsVerbose) logger.Verbose("SqlMembershipTable.UpdateRow aborted due to null check. TableVersion is null ");
throw new ArgumentNullException("tableVersion");
}
try
{
return orleansQueries.UpdateMembershipRowAsync(deploymentId, etag, entry, tableVersion);
}
catch(Exception ex)
{
if (logger.IsVerbose) logger.Verbose("SqlMembershipTable.UpdateRow failed: {0}", ex);
throw;
}
}
示例9: ArgumentNullException
Task<bool> IMembershipTable.InsertRow(MembershipEntry entry, TableVersion tableVersion)
{
if (logger.IsVerbose3) logger.Verbose3(string.Format("SqlMembershipTable.InsertRow called with entry {0} and tableVersion {1}.", entry, tableVersion));
//The "tableVersion" parameter should always exist when inserting a row as Init should
//have been called and membership version created and read. This is an optimization to
//not to go through all the way to database to fail a conditional check on etag (which does
//exist for the sake of robustness) as mandated by Orleans membership protocol.
//Likewise, no update can be done without membership entry.
if (entry == null)
{
if (logger.IsVerbose) logger.Verbose("SqlMembershipTable.InsertRow aborted due to null check. MembershipEntry is null.");
throw new ArgumentNullException("entry");
}
if (tableVersion == null)
{
if (logger.IsVerbose) logger.Verbose("SqlMembershipTable.InsertRow aborted due to null check. TableVersion is null ");
throw new ArgumentNullException("tableVersion");
}
try
{
var query = queryConstants.GetConstant(database.InvariantName, QueryKeys.InsertMembershipKey);
return database.InsertMembershipRowAsync(query, deploymentId, entry, tableVersion);
}
catch(Exception ex)
{
if (logger.IsVerbose) logger.Verbose("SqlMembershipTable.InsertRow failed: {0}", ex);
throw;
}
}
示例10: CreateSuspectingTimesParameter
private static IDbDataParameter CreateSuspectingTimesParameter(IDbCommand command, MembershipEntry membershipEntry, ParameterDirection direction)
{
var parameter = command.CreateParameter();
parameter.ParameterName = "suspectingTimes";
parameter.DbType = DbType.String;
parameter.Direction = direction;
if(membershipEntry.SuspectTimes != null)
{
var timeList = new StringBuilder();
bool first = true;
foreach(var tuple in membershipEntry.SuspectTimes)
{
if(!first)
{
timeList.Append('|');
}
timeList.Append(TraceLogger.PrintDate(tuple.Item2));
first = false;
}
parameter.Value = timeList.ToString();
}
else
{
parameter.Value = DBNull.Value;
}
return parameter;
}
示例11: UpdateMembershipRowAsync
/// <summary>
/// Updates membership row data.
/// </summary>
/// <param name="storage">The storage to use.</param>
/// <param name="query">The query to use.</param>
/// <param name="deploymentId">The deployment with which to insert row.</param>
/// <param name="etag">The etag of which to use to check if the membership data being updated is not stale.</param>
/// <param name="membershipEntry">The membership data to used to update database.</param>
/// <param name="version">The membership version used to update database.</param>
/// <returns><em>TRUE</em> if update SUCCEEDS. <em>FALSE</em> ot</returns>
internal static async Task<bool> UpdateMembershipRowAsync(this IRelationalStorage storage, string query, string deploymentId, string etag, MembershipEntry membershipEntry, TableVersion version)
{
var ret = await storage.ReadAsync(query, command =>
{
var direction = ParameterDirection.Input;
var siloIdParameter = CreateDeploymentIdParameter(command, deploymentId, direction);
command.Parameters.Add(siloIdParameter);
var versionParameter = CreateVersionParameter(command, version.Version, direction);
command.Parameters.Add(versionParameter);
var versionEtagParameter = CreateVersionEtagParameter(command, version.VersionEtag, direction);
command.Parameters.Add(versionEtagParameter);
//The insert membership row part.
var etagParameter = CreateEtagParameter(command, etag, direction);
command.Parameters.Add(etagParameter);
var addressParameter = CreateAddressParameter(command, membershipEntry.SiloAddress.Endpoint.Address, direction);
command.Parameters.Add(addressParameter);
var portParameter = CreatePortParameter(command, membershipEntry.SiloAddress.Endpoint.Port, direction);
command.Parameters.Add(portParameter);
var generationParameter = CreateGenerationParameter(command, membershipEntry.SiloAddress.Generation, direction);
command.Parameters.Add(generationParameter);
var hostNameParameter = CreateHostNameParameter(command, membershipEntry.HostName, direction);
command.Parameters.Add(hostNameParameter);
var statusParameter = CreateStatusParameter(command, membershipEntry.Status, direction);
command.Parameters.Add(statusParameter);
var proxyPortParameter = CreateProxyPortParameter(command, membershipEntry.ProxyPort, direction);
command.Parameters.Add(proxyPortParameter);
var roleNameParameter = CreateRoleNameParameter(command, membershipEntry.RoleName, direction);
command.Parameters.Add(roleNameParameter);
var instanceNameParameter = CreateInstanceNameParameter(command, membershipEntry.InstanceName, direction);
command.Parameters.Add(instanceNameParameter);
var updateZoneParameter = CreateUpdateZoneParameter(command, membershipEntry.UpdateZone, direction);
command.Parameters.Add(updateZoneParameter);
var faultZoneParameter = CreateFaultZoneParameter(command, membershipEntry.FaultZone, direction);
command.Parameters.Add(faultZoneParameter);
var startTimeParameter = CreateStartTimeParameter(command, membershipEntry.StartTime, direction);
command.Parameters.Add(startTimeParameter);
var iAmAliveTimeParameter = CreateIAmAliveTimeParameter(command, membershipEntry.IAmAliveTime, direction);
command.Parameters.Add(iAmAliveTimeParameter);
var suspectingSilosParameter = CreateSuspectingSilosParameter(command, membershipEntry, direction);
command.Parameters.Add(suspectingSilosParameter);
var suspectingTimesParameter = CreateSuspectingTimesParameter(command, membershipEntry, direction);
command.Parameters.Add(suspectingTimesParameter);
}, (selector, _) => { return selector.GetBoolean(0); }).ConfigureAwait(continueOnCapturedContext: false);
return ret.First();
}
示例12: FromMembershipEntry
internal static ConsulSiloRegistration FromMembershipEntry(String deploymentId, MembershipEntry entry, String etag)
{
var ret = new ConsulSiloRegistration
{
DeploymentId = deploymentId,
Address = entry.SiloAddress,
IAmAliveTime = entry.IAmAliveTime,
LastIndex = Convert.ToUInt64(etag),
Hostname = entry.HostName,
ProxyPort = entry.ProxyPort,
StartTime = entry.StartTime,
Status = entry.Status,
SiloName = entry.SiloName,
SuspectingSilos = entry.SuspectTimes.Select(silo => new SuspectingSilo { Id = silo.Item1.ToParsableString(), Time = silo.Item2 }).ToList()
};
return ret;
}
示例13: Convert
private static SiloInstanceTableEntry Convert(MembershipEntry memEntry, string deploymentId)
{
var tableEntry = new SiloInstanceTableEntry
{
DeploymentId = deploymentId,
Address = memEntry.SiloAddress.Endpoint.Address.ToString(),
Port = memEntry.SiloAddress.Endpoint.Port.ToString(CultureInfo.InvariantCulture),
Generation = memEntry.SiloAddress.Generation.ToString(CultureInfo.InvariantCulture),
HostName = memEntry.HostName,
Status = memEntry.Status.ToString(),
ProxyPort = memEntry.ProxyPort.ToString(CultureInfo.InvariantCulture),
RoleName = memEntry.RoleName,
InstanceName = memEntry.InstanceName,
UpdateZone = memEntry.UpdateZone.ToString(CultureInfo.InvariantCulture),
FaultZone = memEntry.FaultZone.ToString(CultureInfo.InvariantCulture),
StartTime = TraceLogger.PrintDate(memEntry.StartTime),
IAmAliveTime = TraceLogger.PrintDate(memEntry.IAmAliveTime)
};
if (memEntry.SuspectTimes != null)
{
var siloList = new StringBuilder();
var timeList = new StringBuilder();
bool first = true;
foreach (var tuple in memEntry.SuspectTimes)
{
if (!first)
{
siloList.Append('|');
timeList.Append('|');
}
siloList.Append(tuple.Item1.ToParsableString());
timeList.Append(TraceLogger.PrintDate(tuple.Item2));
first = false;
}
tableEntry.SuspectingSilos = siloList.ToString();
tableEntry.SuspectingTimes = timeList.ToString();
}
else
{
tableEntry.SuspectingSilos = String.Empty;
tableEntry.SuspectingTimes = String.Empty;
}
tableEntry.PartitionKey = deploymentId;
tableEntry.RowKey = SiloInstanceTableEntry.ConstructRowKey(memEntry.SiloAddress);
return tableEntry;
}
示例14: ConvertPartial
private static SiloInstanceTableEntry ConvertPartial(MembershipEntry memEntry, string deploymentId)
{
return new SiloInstanceTableEntry
{
DeploymentId = deploymentId,
IAmAliveTime = TraceLogger.PrintDate(memEntry.IAmAliveTime),
PartitionKey = deploymentId,
RowKey = SiloInstanceTableEntry.ConstructRowKey(memEntry.SiloAddress)
};
}
示例15: Parse
private static MembershipEntry Parse(SiloInstanceTableEntry tableEntry)
{
var parse = new MembershipEntry
{
HostName = tableEntry.HostName,
Status = (SiloStatus) Enum.Parse(typeof (SiloStatus), tableEntry.Status)
};
if (!string.IsNullOrEmpty(tableEntry.ProxyPort))
parse.ProxyPort = int.Parse(tableEntry.ProxyPort);
parse.IsPrimary = false; // there are no primaries with in Azure table.
int port = 0;
if (!string.IsNullOrEmpty(tableEntry.Port))
int.TryParse(tableEntry.Port, out port);
int gen = 0;
if (!string.IsNullOrEmpty(tableEntry.Generation))
int.TryParse(tableEntry.Generation, out gen);
parse.SiloAddress = SiloAddress.New(new IPEndPoint(IPAddress.Parse(tableEntry.Address), port), gen);
parse.RoleName = tableEntry.RoleName;
parse.InstanceName = tableEntry.InstanceName;
if (!string.IsNullOrEmpty(tableEntry.UpdateZone))
parse.UpdateZone = int.Parse(tableEntry.UpdateZone);
if (!string.IsNullOrEmpty(tableEntry.FaultZone))
parse.FaultZone = int.Parse(tableEntry.FaultZone);
parse.StartTime = !string.IsNullOrEmpty(tableEntry.StartTime) ?
TraceLogger.ParseDate(tableEntry.StartTime) : default(DateTime);
parse.IAmAliveTime = !string.IsNullOrEmpty(tableEntry.IAmAliveTime) ?
TraceLogger.ParseDate(tableEntry.IAmAliveTime) : default(DateTime);
var suspectingSilos = new List<SiloAddress>();
var suspectingTimes = new List<DateTime>();
if (!string.IsNullOrEmpty(tableEntry.SuspectingSilos))
{
string[] silos = tableEntry.SuspectingSilos.Split('|');
foreach (string silo in silos)
{
suspectingSilos.Add(SiloAddress.FromParsableString(silo));
}
}
if (!string.IsNullOrEmpty(tableEntry.SuspectingTimes))
{
string[] times = tableEntry.SuspectingTimes.Split('|');
foreach (string time in times)
suspectingTimes.Add(TraceLogger.ParseDate(time));
}
if (suspectingSilos.Count != suspectingTimes.Count)
throw new OrleansException(String.Format("SuspectingSilos.Length of {0} as read from Azure table is not eqaul to SuspectingTimes.Length of {1}", suspectingSilos.Count, suspectingTimes.Count));
for (int i = 0; i < suspectingSilos.Count; i++)
parse.AddSuspector(suspectingSilos[i], suspectingTimes[i]);
return parse;
}