public string HolderId {get; set;}
public string ResourceId {get; set;}
public DateTimeOffset LeaseExpiry {get; set;}
public LockToken(string s, string sd, DateTimeOffset ssx)
public static class DynamoDBLockTokenMapper
const int DynamoDBLockTokenComponentsNumber = 3;
const char DynamoDBLockTokenComponentsSeparator = ' ';
public static LockToken GetDynamoDBLockTokenFromString(string stringifiedToken)
if (string.IsNullOrEmpty(stringifiedToken))
var components = stringifiedToken.Split(DynamoDBLockTokenComponentsSeparator);
if (components != null && components.Any() && components.Length == DynamoDBLockTokenComponentsNumber && DateTimeOffset.TryParse(components[2], out var dateTimeOffset))
return new LockToken(components[0], components[1], dateTimeOffset);
public static string GetStringifiedDynamoDBLockToken(LockToken lockToken)
var components = new string[]
lockToken.LeaseExpiry.ToString("O")
return string.Join(DynamoDBLockTokenComponentsSeparator, components);
public static void Main()
Console.WriteLine(string.Join("\nv", "ewfw", "ewfew"));