Skip to content

Commit dc3cc7c

Browse files
Added RemoveEvents
1 parent edad6c1 commit dc3cc7c

File tree

5 files changed

+186
-196
lines changed

5 files changed

+186
-196
lines changed

DeveloperTools/Controllers/RemoteEventController.cs

Lines changed: 0 additions & 139 deletions
This file was deleted.

tests/temp/RemoteEvent/Index.cshtml renamed to DeveloperTools/EPiServer.DeveloperTools.Views/Views/RemoteEvent/Index.cshtml

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
1-
@using System.Collections
2-
@using DeveloperTools.Models
3-
@using EPiServer.Shell
4-
@inherits System.Web.Mvc.WebViewPage<DeveloperTools.Models.RemoteEventsModel>
5-
6-
@{
7-
Layout = Paths.ToResource("EPiServer.DeveloperTools", "Views/Shared/DevToolsMaster.cshtml");
8-
}
1+
@model EPiServer.DeveloperTools.Features.RemoteEvent.RemoteEventsModel
92

103
<div class="epi-contentArea">
11-
<h1 class="EP-prefix">A tool uses for show diagnostic and statical Remote Events</h1>
4+
<h1 class="EP-prefix">Tool to show diagnostic and statics for Remote Events</h1>
125
<p>
136
Configuration status: <strong>@(Model.Enabled ? "Enabled" : "Disabled")</strong><br />
147
Provider: <strong>@Model.ProviderName</strong> (@Model.ProviderType)<br />
@@ -39,7 +32,7 @@
3932
</table>
4033

4134
<p style="margin-bottom: .5em">
42-
Number of Event Types: <strong>@(Model.RemoteEventModel !=null ? Model.RemoteEventModel.Count() : 0).</strong><br />
35+
Number of Event Types: <strong>@(Model.RemoteEventModel?.Count() ?? 0).</strong><br />
4336
Total Number of Sent Events: <strong>@Model.TotalNumberOfSentEvent.</strong><br />
4437
Total Number of Received Events: <strong>@Model.TotalNumberOfReceivedEvent.</strong>
4538
</p>
@@ -71,9 +64,9 @@
7164
{
7265
<span>@Html.Label("EventId"):</span> <span>@Html.TextBoxFor(m => m.SendRemoteEventModel.EventId)</span>
7366
<span>@Html.Label("Param"):</span> <span>@Html.TextBoxFor(m => m.SendRemoteEventModel.Param)</span>
74-
<span>@Html.Label("Number Of Events"):</span> <span>@Html.TextBoxFor(m => m.SendRemoteEventModel.NumberOfevents)</span>
67+
<span>@Html.Label("Number Of Events"):</span> <span>@Html.TextBoxFor(m => m.SendRemoteEventModel.NumberOfEvents)</span>
7568
<input type="submit" value="Send Message" />
76-
<span>Sent message: @Model.SendRemoteEventModel.NumberOfeventsSent</span>
69+
<span>Sent message: @Model.SendRemoteEventModel.NumberOfEventsSent</span>
7770
}
7871
</div>
7972
</div>
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using DeveloperTools.Controllers;
6+
using EPiServer.Events.Clients;
7+
using EPiServer.Events.Clients.Internal;
8+
using EPiServer.Events.Providers.Internal;
9+
using EPiServer.Licensing.Services;
10+
using Microsoft.AspNetCore.Mvc;
11+
12+
namespace EPiServer.DeveloperTools.Features.RemoteEvent;
13+
14+
public class RemoteEventController : DeveloperToolsController
15+
{
16+
private static readonly Guid RaiserId = Guid.NewGuid();
17+
private static Dictionary<Guid, string> _mappedGuidName;
18+
private readonly IEventRegistry _eventRegistry;
19+
private readonly EventProviderService _providerService;
20+
private readonly ServerStateService _serverStateService;
21+
22+
public RemoteEventController(
23+
IEventRegistry eventRegistry,
24+
ServerStateService serverStateService,
25+
EventProviderService providerService)
26+
{
27+
_eventRegistry = eventRegistry;
28+
_serverStateService = serverStateService;
29+
_providerService = providerService;
30+
TranslateGuidToName();
31+
}
32+
33+
public ActionResult Index()
34+
{
35+
return View("Index", GetRemoteEventModel());
36+
}
37+
38+
[HttpPost, ActionName("Index")]
39+
public ActionResult SendMessage(SendRemoteEventModel sendRemoteEventModel)
40+
{
41+
var i = 0;
42+
if (sendRemoteEventModel.EventId != Guid.Empty)
43+
{
44+
var e = Event.Get(sendRemoteEventModel.EventId);
45+
for (; i < sendRemoteEventModel.NumberOfEvents; i++)
46+
{
47+
Task.Factory.StartNew(() => e.Raise(RaiserId, sendRemoteEventModel.Param));
48+
}
49+
sendRemoteEventModel.NumberOfEventsSent = i;
50+
}
51+
else
52+
{
53+
sendRemoteEventModel.NumberOfEventsSent = i;
54+
}
55+
var model = GetRemoteEventModel();
56+
model.SendRemoteEventModel = sendRemoteEventModel;
57+
58+
return View("Index", model);
59+
}
60+
61+
private RemoteEventsModel GetRemoteEventModel()
62+
{
63+
var remoteEventModel = new List<RemoteEventModel>();
64+
long sentEvents = 0;
65+
long receivedEvents = 0;
66+
foreach (var ev in _eventRegistry.List())
67+
{
68+
var rm = new RemoteEventModel
69+
{
70+
Guid = ev.Id.ToString(),
71+
Name = GetName(ev.Id),
72+
NumberOfReceived = ev.ReceivedCount,
73+
NumberOfSent = ev.SentCount
74+
};
75+
76+
sentEvents += rm.NumberOfSent;
77+
receivedEvents += rm.NumberOfReceived;
78+
remoteEventModel.Add(rm);
79+
}
80+
81+
var activeServers = LicensingServices.Instance.GetService<IServerStateService>().GetActiveServers();
82+
83+
var remoteServers = _serverStateService.CurrentServerState()
84+
.Where(x => x.Active)
85+
.ToArray();
86+
87+
return new RemoteEventsModel
88+
{
89+
RemoteEventModel = remoteEventModel,
90+
TotalNumberOfReceivedEvent = receivedEvents,
91+
TotalNumberOfSentEvent = sentEvents,
92+
ActiveServers = activeServers,
93+
ServerState = remoteServers,
94+
//ProviderName = _providerService.DefaultProvider.Name,
95+
//ProviderType = _providerService.DefaultProvider.GetType().FullName,
96+
Enabled = _providerService.Enabled
97+
};
98+
}
99+
100+
private static string GetName(Guid guid) =>
101+
_mappedGuidName.TryGetValue(guid, out var name) ? name : guid.ToString();
102+
103+
private static void TranslateGuidToName()
104+
{
105+
if (_mappedGuidName != null)
106+
{
107+
return;
108+
}
109+
110+
_mappedGuidName = new Dictionary<Guid, string>
111+
{
112+
{ new Guid("4e755664-8fd9-4906-88ca-476842076f98"), "CacheObjectStore-ObjectStoreCache" },
113+
{ new Guid("1ee4c0b5-ca95-4bdb-b0d4-e5d9e91189aa"), "CacheEventNotifier-CacheEventNotifier" },
114+
{ new Guid("c1b94788-2410-4da1-af51-4927abe5da94"), "PermanentLinkMapStore-Change" },
115+
{ new Guid("414cda81-8720-41f1-bad2-7d6155f419dc"), "PermanentLinkMapStore-Remove" },
116+
{ new Guid("ff174e9c-e3c4-4072-9e1f-7eaf59c5f54f"), "VirtualRoleReplication-Register" },
117+
{ new Guid("546bf805-e87a-46d7-95d1-423ed87662bd"), "VirtualRoleReplication-UnRegister" },
118+
{ new Guid("15fc0951-4510-49ae-9fa3-6cd4762d4101"), "VirtualRoleReplication-Clear" },
119+
{ new Guid("f67ab721-faa5-4e37-b894-75aaffa7665d"), "VisitorGroupEvents-Saved" },
120+
{ new Guid("719a93e5-727e-441f-8167-70cca8639803"), "VisitorGroupEvents-Deleted" },
121+
{ new Guid("eaac6db8-c224-4558-8e07-4454a15f8d71"), "RuntimeCacheEvents-BlockedCache" },
122+
{ new Guid("69793f9f-c106-4b71-a524-8ed7af051077"), "RuntimeCacheEvents-FlushStoredCache" },
123+
{ new Guid("d464d910-68ef-402a-98c6-72a2c95dcdba"), "ContentLanguageSettingsHandler-ClearSettings" },
124+
{ new Guid("0ccfcc21-2e73-4901-a559-a4484d7bd472"), "ContentLanguageSettingsHandler-ClearTreeMap" },
125+
{ new Guid("c6fb4f08-069c-4ee6-8588-4d5cc806b654"), "BroadcastOperations-Workflow" },
126+
{ new Guid("b6f0e39a-93ef-4dee-a728-a49dac5501fa"), "ChangeLogSystem-Start" },
127+
{ new Guid("a416a5af-6469-48f7-ad9e-c358fe506916"), "ChangeLogSystem-Stop" },
128+
{ new Guid("55a261f2-9b2a-47dc-87b7-29c4eab895eb"), "ChangeLogSystem-StateChange" },
129+
{ new Guid("9484e34b-b419-4e59-8fd5-3277668a7fce"), "RemoteCacheSynchronization-RemoveFromCache" },
130+
{ new Guid("51da5053-6af8-4a10-9bd4-8417e48f38bd"), "ServerStateService-State" },
131+
{ new Guid("184468e9-9f0d-4460-aecd-3c08f652c73c"), "ScheduledJob-StopJob" },
132+
{ new Guid("CCDF4F50-8216-4919-B8C1-21D9F1932BAF"), "MetaDataEventManager-MetaDataUpdated" },
133+
{ new Guid("8B448BC6-F7E1-4833-BDC7-CA338B77ADFA"), "ProductEventManager-CommerceProductUpdated" },
134+
{ new Guid("B10915E6-0C84-4a6a-8707-FF6F357A1099"), "BlogModule-BlogReplication" },
135+
{ new Guid("F6F0147E-F60F-4801-8647-66270D10AFB9"), "ForumModule-ForumReplication" },
136+
{ new Guid("F6742777-6F38-46a1-AA38-9985715089A2"), "ImageGalleryModule-ImageGalleryReplication" },
137+
{ new Guid("F160271E-7972-447a-81D0-152A35FD77BD"), "OnlineStatusModule-OnlineStatusReplication" },
138+
{ new Guid("BE4D5630-8307-4361-9366-71C0032E8A84"), "SiteDefinitionRepository-Saved" },
139+
{ new Guid("B8635A4C-7D77-4C69-B1EB-674D4AB442FC"), "PermanentLinkMapStore-ClearCache" },
140+
{ new Guid("96728921-417C-4061-B278-C5621BD4F995"), "UI push notification" }
141+
};
142+
}
143+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using EPiServer.Events.Clients.Internal;
5+
6+
namespace EPiServer.DeveloperTools.Features.RemoteEvent;
7+
8+
[Serializable]
9+
public class RemoteEventsModel
10+
{
11+
public IEnumerable<RemoteEventModel> RemoteEventModel { get; set; } = Enumerable.Empty<RemoteEventModel>();
12+
public long TotalNumberOfSentEvent { get; set; }
13+
public long TotalNumberOfReceivedEvent { get; set; }
14+
public SendRemoteEventModel SendRemoteEventModel { get; set; } = new();
15+
public IEnumerable<string> ActiveServers { get; set; }
16+
public IEnumerable<ServerState> ServerState { get; set; }
17+
public string ProviderName { get; set; }
18+
public string ProviderType { get; set; }
19+
public bool Enabled { get; set; }
20+
}
21+
22+
[Serializable]
23+
public class RemoteEventModel
24+
{
25+
public string Name { get; set; }
26+
public string Guid { get; set; }
27+
public long NumberOfSent { get; set; }
28+
public long NumberOfReceived { get; set; }
29+
}
30+
31+
[Serializable]
32+
public class SendRemoteEventModel
33+
{
34+
public Guid EventId { get; set; }
35+
public string Param { get; set; }
36+
public int NumberOfEvents { get; set; }
37+
public int NumberOfEventsSent { get; set; }
38+
}

0 commit comments

Comments
 (0)