Skip to content

Commit 6222a59

Browse files
committed
v.0.0.1
1 parent 5891ba3 commit 6222a59

10 files changed

Lines changed: 800 additions & 63 deletions

File tree

.gitignore

Lines changed: 579 additions & 63 deletions
Large diffs are not rendered by default.

Directory.Build.props

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<Project>
2+
<!--NuGet-->
3+
<PropertyGroup>
4+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
5+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
6+
<Authors>ManagedCode</Authors>
7+
<Copyright>Copyright © 2021-$([System.DateTime]::Now.ToString(`yyyy`)) ManagedCode SAS</Copyright>
8+
<RepositoryUrl>https://github.com/managed-code-hub/Communication</RepositoryUrl>
9+
<PackageProjectUrl>https://github.com/managed-code-hub/Communication</PackageProjectUrl>
10+
<RepositoryType>Github</RepositoryType>
11+
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
12+
<PackageIcon>logo.png</PackageIcon>
13+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
14+
<PackageReadmeFile>README.md</PackageReadmeFile>
15+
<Product>Managed Code - Communication</Product>
16+
<Version>0.0.1</Version>
17+
<PackageVersion>0.0.1</PackageVersion>
18+
</PropertyGroup>
19+
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
20+
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
21+
</PropertyGroup>
22+
<ItemGroup>
23+
<None Include="$(SolutionDir)\logo.png" Pack="true" Visible="false" PackagePath="\"/>
24+
<None Include="$(SolutionDir)\README.md" Pack="true" Visible="false" PackagePath="\"/>
25+
</ItemGroup>
26+
</Project>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<EnableNETAnalyzers>true</EnableNETAnalyzers>
6+
<IsPackable>false</IsPackable>
7+
<LangVersion>10</LangVersion>
8+
<Nullable>enable</Nullable>
9+
</PropertyGroup>
10+
<PropertyGroup>
11+
<VSTestLogger>trx%3bLogFileName=$(MSBuildProjectName).trx</VSTestLogger>
12+
<VSTestResultsDirectory>$(MSBuildThisFileDirectory)</VSTestResultsDirectory>
13+
</PropertyGroup>
14+
<ItemGroup>
15+
<None Update="xunit.runner.json">
16+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
17+
</None>
18+
</ItemGroup>
19+
<ItemGroup>
20+
<PackageReference Include="FluentAssertions" Version="6.5.1" />
21+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
22+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
23+
<PackageReference Include="xunit" Version="2.4.1" />
24+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
25+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
26+
<PrivateAssets>all</PrivateAssets>
27+
</PackageReference>
28+
<PackageReference Include="coverlet.collector" Version="3.1.2">
29+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
30+
<PrivateAssets>all</PrivateAssets>
31+
</PackageReference>
32+
<PackageReference Include="coverlet.msbuild" Version="3.1.2">
33+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
34+
<PrivateAssets>all</PrivateAssets>
35+
</PackageReference>
36+
</ItemGroup>
37+
38+
<ItemGroup>
39+
<ProjectReference Include="..\ManagedCode.Communication\ManagedCode.Communication.csproj" />
40+
</ItemGroup>
41+
42+
</Project>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
namespace ManagedCode.Communication.Tests;
2+
3+
public class Tests
4+
{
5+
}

ManagedCode.Communication.sln

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManagedCode.Communication", "ManagedCode.Communication\ManagedCode.Communication.csproj", "{B54A4631-1069-4431-8334-D42FF29BFC44}"
4+
EndProject
5+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManagedCode.Communication.Tests", "ManagedCode.Communication.Tests\ManagedCode.Communication.Tests.csproj", "{25FA73FF-FD66-4C66-9357-325AE3F2F709}"
6+
EndProject
7+
Global
8+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
9+
Debug|Any CPU = Debug|Any CPU
10+
Release|Any CPU = Release|Any CPU
11+
EndGlobalSection
12+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
13+
{B54A4631-1069-4431-8334-D42FF29BFC44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
14+
{B54A4631-1069-4431-8334-D42FF29BFC44}.Debug|Any CPU.Build.0 = Debug|Any CPU
15+
{B54A4631-1069-4431-8334-D42FF29BFC44}.Release|Any CPU.ActiveCfg = Release|Any CPU
16+
{B54A4631-1069-4431-8334-D42FF29BFC44}.Release|Any CPU.Build.0 = Release|Any CPU
17+
{C4805F29-78B8-4BD8-86FE-4E322419E8DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
18+
{C4805F29-78B8-4BD8-86FE-4E322419E8DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
19+
{C4805F29-78B8-4BD8-86FE-4E322419E8DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
20+
{C4805F29-78B8-4BD8-86FE-4E322419E8DE}.Release|Any CPU.Build.0 = Release|Any CPU
21+
{25FA73FF-FD66-4C66-9357-325AE3F2F709}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
22+
{25FA73FF-FD66-4C66-9357-325AE3F2F709}.Debug|Any CPU.Build.0 = Debug|Any CPU
23+
{25FA73FF-FD66-4C66-9357-325AE3F2F709}.Release|Any CPU.ActiveCfg = Release|Any CPU
24+
{25FA73FF-FD66-4C66-9357-325AE3F2F709}.Release|Any CPU.Build.0 = Release|Any CPU
25+
EndGlobalSection
26+
EndGlobal
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
<LangVersion>10</LangVersion>
7+
</PropertyGroup>
8+
9+
<!--NuGet-->
10+
<PropertyGroup>
11+
<Title>ManagedCode.Communication</Title>
12+
<PackageId>ManagedCode.Communication</PackageId>
13+
<Description>Communication for .NET</Description>
14+
<PackageTags>managedcode, Communication, Result</PackageTags>
15+
</PropertyGroup>
16+
17+
<ItemGroup>
18+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
19+
</ItemGroup>
20+
21+
</Project>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using System;
2+
3+
namespace ManagedCode.Communication;
4+
5+
public class Result
6+
{
7+
public Result(bool isSucceeded, ResultState status, Exception? error)
8+
{
9+
IsSucceeded = isSucceeded;
10+
Status = status;
11+
Error = error;
12+
}
13+
14+
public Result(bool isSucceeded, ResultState status)
15+
{
16+
IsSucceeded = isSucceeded;
17+
Status = status;
18+
Error = null;
19+
}
20+
21+
public Result(Exception? error, ResultState status)
22+
{
23+
IsSucceeded = false;
24+
Error = error;
25+
Status = status;
26+
}
27+
28+
public bool IsSucceeded { get; }
29+
public bool IsError => !IsSucceeded;
30+
public Exception? Error { get; }
31+
public ResultState Status { get; }
32+
33+
public static Result Succeeded(ResultState status = ResultState.Success)
34+
{
35+
return new Result(true, status);
36+
}
37+
38+
public static Result Failed(ResultState status, Exception? error = null)
39+
{
40+
return new Result(error, status);
41+
}
42+
43+
public static Result Failed(Exception? error, ResultState status = ResultState.Failed)
44+
{
45+
return new Result(error, status);
46+
}
47+
48+
public static Result Failed()
49+
{
50+
return new Result(null, ResultState.Failed);
51+
}
52+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace ManagedCode.Communication;
2+
3+
public enum ResultState : byte
4+
{
5+
Failed,
6+
Success
7+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using System;
2+
3+
namespace ManagedCode.Communication;
4+
5+
public class Result<T> : Result
6+
{
7+
protected Result(Exception? error, ResultState status) : base(error, status)
8+
{
9+
}
10+
11+
public Result(bool isSucceeded, T value, ResultState status, Exception? error) : base(isSucceeded, status, error)
12+
{
13+
Value = value;
14+
}
15+
16+
public Result(bool isSucceeded, T value, ResultState status) : base(isSucceeded, status)
17+
{
18+
Value = value;
19+
}
20+
21+
public T? Value { get; }
22+
23+
public static Result<T> Succeeded(T content, ResultState status = ResultState.Success)
24+
{
25+
return new Result<T>(true, content, status);
26+
}
27+
28+
public static Result<T> Failed(ResultState status, Exception? error = null)
29+
{
30+
return new Result<T>(error, status);
31+
}
32+
33+
public static Result<T> Failed(Exception? error, ResultState status = ResultState.Failed)
34+
{
35+
return new Result<T>(error, status);
36+
}
37+
38+
public static Result<T> Failed()
39+
{
40+
return new Result<T>(null, ResultState.Failed);
41+
}
42+
}

logo.png

10.6 KB
Loading

0 commit comments

Comments
 (0)