public Status(ServiceNode serviceNode) { UIApp.PubSub.Subscribe <ProfileDataResultEvent>(this, ProfileData); ServiceNode = serviceNode; try { var data = serviceNode.CacheStorage.ReadFileBytes(GetType().Name); if (data != null) { using (var unpacker = new Unpacker(data)) { _subscriptions = new Subscriptions(unpacker, this); if (unpacker.UnpackBool()) { _subscriptionLastTransaction = new LastTransactionInfo(unpacker); } } } } catch (Exception ex) { Log.IgnoreException(ex); } if (_subscriptions == null) { _subscriptions = new Subscriptions(AccountId, ChainId, this); } }
public FriendInfo(long accountId, LastTransactionInfo lastTransactionInfo, List <long> friends, List <FriendInvitation> invitations) { AccountId = accountId; LastTransactionInfo = lastTransactionInfo; Friends = friends; Invitations = invitations; }
public FanContainer(Unpacker unpacker, ushort size, Feature feature, FeatureAccount featureAccount) : base(unpacker, size, feature, featureAccount) { unpacker.Unpack(_fans); unpacker.Unpack(_fanOf); LastFansTransactionInfo = new LastTransactionInfo(unpacker); LastFanOfTransactionInfo = new LastTransactionInfo(unpacker); }
public FriendInfo(Unpacker unpacker) { unpacker.Unpack(out AccountId); LastTransactionInfo = new LastTransactionInfo(unpacker); unpacker.Unpack(out Friends); unpacker.Unpack(out Invitations, (u) => new FriendInvitation(AccountId, u)); }
public void RemoveFanOf(long accountId, Transaction transaction) { lock (FeatureAccount) { _fanOf.Remove(accountId); LastFanOfTransactionInfo = new LastTransactionInfo(transaction.TransactionId, transaction.Timestamp); } }
public void AddFan(long accountId, Transaction transaction) { lock (FeatureAccount) { _fans.Add(accountId); LastFansTransactionInfo = new LastTransactionInfo(transaction.TransactionId, transaction.Timestamp); } }
public void AddFriendInvitation(FriendInvitation invitation, Transaction transaction) { lock (this) { _friendInvitations[invitation.FriendAccountId] = invitation; LastFriendTransactionInfo = new LastTransactionInfo(transaction.TransactionId, transaction.Timestamp); } }
protected AccountPurchase(Unpacker unpacker) { unpacker.Unpack(out PurchaseGroupId); LastPurchase = new LastTransactionInfo(unpacker); if (unpacker.UnpackBool()) { LastConsume = new LastTransactionInfo(unpacker); } }
public void RemoveFriend(long accountId, Transaction transaction) { lock (FeatureAccount) { _friendInvitations.Remove(accountId); _friends.Remove(accountId); LastFriendTransactionInfo = new LastTransactionInfo(transaction.TransactionId, transaction.Timestamp); } }
public GroupAdministrationInfo(long groupId, long accountId, long transactionId, long timestamp, GroupFlags flags = GroupFlags.None) { GroupId = groupId; AccountId = accountId; TransactionId = transactionId; Flags = flags; AdministrationLastTransactionInfo = new LastTransactionInfo(transactionId, timestamp); _accounts[accountId] = GroupAccountFlags.Admin; }
public void ConsumeGroupAdministrationRequest(Transaction transaction, GroupAdministrationRequest accounts, out DirtyGroupAccounts dirtyGroupAccounts) { dirtyGroupAccounts = new DirtyGroupAccounts(); lock (this) { AdministrationLastTransactionInfo = new LastTransactionInfo(transaction.TransactionId, transaction.Timestamp); foreach (var added in accounts.AddedAccounts) { var id = added.Key; var flags = added.Value; if (_pendingAccounts.TryGetValue(id, out var pendingFlags)) { flags |= pendingFlags; } if ((flags & GroupAccountFlags.HasAccountApproval) != 0 && (flags & GroupAccountFlags.HasAdminApproval) != 0) { flags &= ~(GroupAccountFlags.HasAccountApproval | GroupAccountFlags.HasAdminApproval); _accounts[id] = flags; _pendingAccounts.Remove(id); dirtyGroupAccounts.AddedAccounts.Add(id); } else { _pendingAccounts[id] = flags; } } foreach (var removed in accounts.RemovedAccounts) { _accounts.Remove(removed); _pendingAccounts.Remove(removed); dirtyGroupAccounts.RemovedAccounts.Add(removed); } foreach (var updated in accounts.UpdatedFlags) { var id = updated.Key; var flags = updated.Value; if (_accounts.ContainsKey(id)) { _accounts[id] = flags; } } } }
public async Task QuerySubscriptions() { if (_subBusy) { return; } _subBusy = true; var lastTransactionInfo = (await Fan.DownloadFanofLastTransactionInfo(ServiceNode.Client, ChainType.Data, ServiceNode.ChainId, StatusServiceInfo.FanChainIndex, ServiceNode.AccountId))?.Item; if (lastTransactionInfo == null) { goto end; } var download = false; if (_subscriptionLastTransaction == null) { download = true; } else { if (lastTransactionInfo.TransactionId > _subscriptionLastTransaction.TransactionId) { download = true; } } if (download) { var fanInfo = (await Fan.DownloadFanOf(ServiceNode.Client, ChainType.Data, ServiceNode.ChainId, StatusServiceInfo.FanChainIndex, ServiceNode.AccountId))?.Item; if (fanInfo == null) { goto end; } _subscriptionLastTransaction = lastTransactionInfo; await _subscriptions.ProcessSubscriptions(fanInfo); await QueryMissingProfiles(); await SaveAsync(); //await ServiceNode.TransactionDownloadManager.UpdateLastAccess(id); } end: _subBusy = false; }
public GroupAdministrationInfo(Unpacker unpacker) { unpacker.Unpack(out GroupId); unpacker.Unpack(out AccountId); unpacker.Unpack(out TransactionId); AdministrationLastTransactionInfo = new LastTransactionInfo(unpacker); Flags = (GroupFlags)unpacker.UnpackUInt(); var count = unpacker.UnpackInt(); for (var i = 0; i < count; i++) { var id = unpacker.UnpackLong(); _accounts[id] = (GroupAccountFlags)unpacker.UnpackUInt(); } count = unpacker.UnpackInt(); for (var i = 0; i < count; i++) { var id = unpacker.UnpackLong(); _pendingAccounts[id] = (GroupAccountFlags)unpacker.UnpackUInt(); } }
public FanInfo(long accountId, LastTransactionInfo lastTransactionInfo, List <long> fans) { AccountId = accountId; LastTransactionInfo = lastTransactionInfo; Fans = fans; }
public FanContainer(Feature feature, FeatureAccount featureAccount) : base(feature, featureAccount) { LastFansTransactionInfo = LastTransactionInfo.Empty; LastFanOfTransactionInfo = LastTransactionInfo.Empty; }
public FriendContainer(Unpacker unpacker, ushort size, Feature feature, FeatureAccount featureAccount) : base(unpacker, size, feature, featureAccount) { unpacker.Unpack(_friends); unpacker.Unpack(_friendInvitations, (u) => new FriendInvitation(AccountId, unpacker)); LastFriendTransactionInfo = new LastTransactionInfo(unpacker); }
public FriendContainer(Feature feature, FeatureAccount featureAccount) : base(feature, featureAccount) { LastFriendTransactionInfo = LastTransactionInfo.Empty; }
public FanInfo(Unpacker unpacker) { unpacker.Unpack(out AccountId); LastTransactionInfo = new LastTransactionInfo(unpacker); Fans = unpacker.UnpackListLong(); }