Created READMEs for most projects

This commit is contained in:
erri120 2019-11-21 15:11:08 +01:00
parent 71862beb86
commit 97b7524030
No known key found for this signature in database
GPG Key ID: A8C0A18D8D4D3135
10 changed files with 64 additions and 42 deletions

View File

@ -0,0 +1,3 @@
# Compression.BSA
BSA Compression gets it's own project to remove cluttering.

View File

@ -0,0 +1,3 @@
# Wabbajack.CacheServer
CacheServer for caching mod information to reduce the amount of API calls a user has to account for when using Wabbajack to compiler/install a ModList.

View File

@ -1,42 +0,0 @@
### Overview of CSP (Communicating Sequential Processes) for the C# programmer
#### What is CSP?
Communicating Sequential processes is a programming model invented in 1978 by Tony Hoare, who described a process
of computation where hundreds or thousands of small processes communicate via channels. Think of this process like
a assembly line. Each worker in the factory is a process, and the conveyor belts are the channels. The workers don't need
to know where a part came from, or where it's going, they simply take one item off the belt, perform an operation and pass
the item on to another belt. This analogy works quite well, and the following observations about a factory also apply to
CSP:
* Multiple workers can pull from the same belt (channel/queue)
* Multiple workers can put work onto the belt
* Belts can buffer items, for slow consumers, but at some point they backup and block the writer
* A worker can pull/push to multiple belts.
#### What does this look like in C#?
The basic unit of CSP in this library is the channel:
```
var chan = Channel.Create()
```
Without any other parameters this creates a channel with a size of 0, so every pending put must be matched
1:1 with a take. This creates a syncronization point. Channels are fully async and thread-safe:
```
public async Task TestTakePutBlocking()
{
var channel = Channel.Create<int>();
// Channel size is 0, so we can't await, because we'd never complete
var ptask = channel.Put(1);
// Now the put is dispatched to the scheduler because we've taken the value
var (open, val) = await channel.Take();
Assert.AreEqual(1, val);
Assert.IsTrue(open);
Assert.IsTrue(await ptask);
}
```

View File

@ -0,0 +1,38 @@
# Wabbajack.Common.CSP
## Overview of CSP (Communicating Sequential Processes) for the C# programmer
### What is CSP?
Communicating Sequential processes is a programming model invented in 1978 by Tony Hoare, who described a process of computation where hundreds or thousands of small processes communicate via channels. Think of this process like a assembly line. Each worker in the factory is a process, and the conveyor belts are the channels. The workers don't need to know where a part came from, or where it's going, they simply take one item off the belt, perform an operation and pass the item on to another belt. This analogy works quite well, and the following observations about a factory also apply to CSP:
* Multiple workers can pull from the same belt (channel/queue)
* Multiple workers can put work onto the belt
* Belts can buffer items, for slow consumers, but at some point they backup and block the writer
* A worker can pull/push to multiple belts.
#### What does this look like in C#?
The basic unit of CSP in this library is the channel:
```cSharp
var chan = Channel.Create()
```
Without any other parameters this creates a channel with a size of 0, so every pending put must be matched 1:1 with a take. This creates a syncronization point. Channels are fully async and thread-safe:
```cSharp
public async Task TestTakePutBlocking()
{
var channel = Channel.Create<int>();
// Channel size is 0, so we can't await, because we'd never complete
var ptask = channel.Put(1);
// Now the put is dispatched to the scheduler because we've taken the value
var (open, val) = await channel.Take();
Assert.AreEqual(1, val);
Assert.IsTrue(open);
Assert.IsTrue(await ptask);
}
```

View File

@ -0,0 +1,3 @@
# Wabbajack.Common
The `Common` part of the project name tells it all: Here you will find our Utility functions, the Constants, File Extractors and Game Handlers.

3
Wabbajack.Lib/Readme.md Normal file
View File

@ -0,0 +1,3 @@
# Wabbajack.Lib
While `Wabbajack` is the front end, `Wabbajack.Lib` is the back end and contains all functionality from the Compilers, the Installers to our NexusAPI and Downloaders.

View File

@ -0,0 +1,4 @@
# Wabbajack.Test.ListValidation
This project is not part of `Wabbajack.Test` as the `ListValidation` test validates every ModList from [this](https://github.com/wabbajack-tools/mod-lists) repository and checks if all ModLists are valid.
The gets called when you push to master or to the repo linked above.

3
Wabbajack.Test/Readme.md Normal file
View File

@ -0,0 +1,3 @@
# Wabbajack.Test
This project contains almost all tests for Wabbajack. If you create a new PR, push to master or update your PR than the tests in this project will be started at Azure DevOps. It is recommended that you run the test(s) for the part of the application you have changed. You can also create new tests if you have added something that other tests do not cover.

View File

@ -0,0 +1,3 @@
# Wabbajack.VirtualFileSystem
Once called just `VirtualFileSystem`, this project is responsible for indexing, staging and caching files from the game folder, the downloads and install folder.

4
Wabbajack/Readme.md Normal file
View File

@ -0,0 +1,4 @@
# Wabbajack
This is the main project of this solution. It contains only UI code like all Views and View Models as well as custom Components and Resources such as icons and images.
You can consider this project to be the front end of Wabbajack.