public void DelayedEval(Func <bool> func, Action action, int tries) { if (func()) { action(); return; } if (--tries < 0) { return; } OnConnectedQueue.Enqueue(() => DelayedEval(func, action, tries)); }
private void RequestGroupMetadata(UUID uuid) { lock (MetadataRequested) if (!MetadataRequested.Add(uuid)) { return; } OnConnectedQueue.Enqueue(() => { // should not loop RequestGroupInfo(uuid); // WriteLine("Requesting groupInfo " + uuid); GridMaster.client.Groups.RequestGroupRoles(uuid); GridMaster.client.Groups.RequestGroupMembers(uuid); GridMaster.client.Groups.RequestGroupRolesMembers(uuid); }); }
private void RequestAvatarMetadata(UUID uuid) { lock (MetadataRequested) if (!MetadataRequested.Add(uuid)) { return; } DeclareAvatarProfile(uuid); NeedRequestAvatarName(uuid); OnConnectedQueue.Enqueue(() => { client.Avatars.RequestAvatarName(uuid); if (MaintainAvatarMetaData) { client.Avatars.RequestAvatarProperties(uuid); //client.Avatars.RequestAvatarClassified(uuid); //client.Avatars.RequestAvatarPicks(uuid); } }); }
private void StartupPostLoginQueues() { lock (DidStartupPostLoginQueuesLock) { if (DidStartupPostLoginQueues) { return; } DidStartupPostLoginQueues = true; } ParentGrabber.Start(); CatchUpQueue.Start(); MetaDataQueue.Start(); OnConnectedQueue.Start(); SimAssetStore.TaskQueueStart(); SlowConnectedQueue.Enqueue(() => SlowConnectedQueue.DebugQueue = false); SlowConnectedQueue.Start(); client.OneAtATimeQueue.Start(); TaskInvGrabber.Start(); }