Skip to content

Commit

Permalink
notifications should not cancel (#328)
Browse files Browse the repository at this point in the history
* notifications should not cancel, instead they should complete in order as expected (as they are typically fire and forget anyway)

* some requests should not be parallel that are

* fixed failing tests
  • Loading branch information
david-driscoll authored Aug 23, 2020
1 parent 22389f3 commit 4fbe2b5
Show file tree
Hide file tree
Showing 12 changed files with 18 additions and 20 deletions.
2 changes: 0 additions & 2 deletions src/JsonRpc/InputHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -562,8 +562,6 @@ private SchedulerDelegate RouteNotification(IRequestDescriptor<IHandlerDescripto
(contentModifiedToken, scheduler) =>
// ITS A RACE!
Observable.Amb(
contentModifiedToken
.Do(_ => { _logger.LogTrace("Notification was abandoned due to content be modified"); }),
Observable.Timer(_requestTimeout, scheduler)
.Select(z => Unit.Default)
.Do(
Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Document/IDocumentFormattingHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
{
[Serial]
[Parallel]
[Method(TextDocumentNames.DocumentFormatting, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]
Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Document/IDocumentOnTypeFormattingHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
{
[Serial]
[Parallel]
[Method(TextDocumentNames.OnTypeFormatting, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]
Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Document/IDocumentRangeFormattingHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
{
[Serial]
[Parallel]
[Method(TextDocumentNames.RangeFormatting, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]
Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Document/IPrepareRenameHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
{
[Serial]
[Parallel]
[Method(TextDocumentNames.PrepareRename, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]
Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Document/IRenameHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
{
[Serial]
[Parallel]
[Method(TextDocumentNames.Rename, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
{
[Serial]
[Parallel]
[Method(TextDocumentNames.WillSaveWaitUntil, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]
Expand Down
6 changes: 3 additions & 3 deletions src/Protocol/Models/WorkspaceFolder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,22 @@ public bool Equals(WorkspaceFolder other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Uri.Equals(other.Uri) && Name == other.Name;
return Equals(Uri, other.Uri) && Name == other.Name;
}

public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != GetType()) return false;
if (obj.GetType() != this.GetType()) return false;
return Equals((WorkspaceFolder) obj);
}

public override int GetHashCode()
{
unchecked
{
return ( Uri.GetHashCode() * 397 ) ^ Name.GetHashCode();
return ( ( Uri != null ? Uri.GetHashCode() : 0 ) * 397 ) ^ ( Name != null ? Name.GetHashCode() : 0 );
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Window/IShowMessageRequestHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Window
{
[Serial]
[Parallel]
[Method(WindowNames.ShowMessageRequest, Direction.ServerToClient)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(IWindowLanguageServer), typeof(ILanguageServer))]
Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Workspace/IDidChangeConfigurationHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Workspace
{
[Serial]
[Parallel]
[Method(WorkspaceNames.DidChangeConfiguration, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
Expand Down
2 changes: 1 addition & 1 deletion src/Protocol/Workspace/IDidChangeWatchedFilesHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace OmniSharp.Extensions.LanguageServer.Protocol.Workspace
{
[Serial]
[Parallel]
[Method(WorkspaceNames.DidChangeWatchedFiles, Direction.ClientToServer)]
[GenerateHandlerMethods]
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
Expand Down
12 changes: 6 additions & 6 deletions test/Lsp.Tests/RequestProcessIdentifierTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@ public void ShouldIdentifyAs_Default()
[InlineData(typeof(IHoverHandler))]
[InlineData(typeof(IReferencesHandler))]
[InlineData(typeof(ISignatureHelpHandler))]
[InlineData(typeof(IDocumentFormattingHandler))]
[InlineData(typeof(IDocumentOnTypeFormattingHandler))]
[InlineData(typeof(IDocumentRangeFormattingHandler))]
[InlineData(typeof(IWillSaveWaitUntilTextDocumentHandler))]
[InlineData(typeof(IDidChangeConfigurationHandler))]
[InlineData(typeof(IDidChangeWatchedFilesHandler))]
public void ShouldIdentifyAs_Parallel(Type type)
{
var identifier = new RequestProcessIdentifier();
Expand All @@ -61,16 +67,10 @@ public void ShouldIdentifyAs_Parallel(Type type)
[InlineData(typeof(IDidChangeTextDocumentHandler))]
[InlineData(typeof(IDidOpenTextDocumentHandler))]
[InlineData(typeof(IDidSaveTextDocumentHandler))]
[InlineData(typeof(IDocumentFormattingHandler))]
[InlineData(typeof(IDocumentOnTypeFormattingHandler))]
[InlineData(typeof(IDocumentRangeFormattingHandler))]
[InlineData(typeof(IWillSaveWaitUntilTextDocumentHandler))]
[InlineData(typeof(IExitHandler))]
[InlineData(typeof(IShutdownHandler))]
[InlineData(typeof(ILanguageProtocolInitializeHandler))]
[InlineData(typeof(ILanguageProtocolInitializedHandler))]
[InlineData(typeof(IDidChangeConfigurationHandler))]
[InlineData(typeof(IDidChangeWatchedFilesHandler))]
[InlineData(typeof(IExecuteCommandHandler))]
public void ShouldIdentifyAs_Serial(Type type)
{
Expand Down

0 comments on commit 4fbe2b5

Please sign in to comment.