-
Notifications
You must be signed in to change notification settings - Fork 69
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7675819
commit 49b2836
Showing
5 changed files
with
56 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/// <summary> | ||
/// The Daemon package is intended to handle background tasks, unloading them from the user | ||
/// interface thread to improve the perceived responsiveness of the application. | ||
/// </summary> | ||
/// <remarks> | ||
/// <para> | ||
/// A singleton instance of DaemonWorker runs as a RepeatingProcess in a thread; it maintains a | ||
/// queue of DaemonActions, which it executes in turn. | ||
/// </para> | ||
/// <para> | ||
/// Instances of classes implementing DaemonAction are intended to be run essentially once, but may be allowed a number of attempts | ||
/// (intended to be limited) in case, for example due to network problems, the first attempt(s) fail. | ||
/// However, DaemonAction is not intended for things which are to be run repeatedly. For that, | ||
/// specialise [RepeatingProcess](class_suite_c_r_m_add_in_1_1_business_logic_1_1_repeating_process.html). | ||
/// </remarks> | ||
namespace SuiteCRMAddIn.Daemon | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# The Daemon package | ||
|
||
The Daemon package is intended to handle background tasks, unloading them from the user interface thread to improve the perceived responsiveness of the application. | ||
|
||
## DaemonWorker | ||
|
||
Is a singleton class which maintains a queue of tasks ('Actions') and executes them in turn. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Introduction for Developers | ||
|
||
## History | ||
|
||
The SuiteCRM Outlook Add-in has a history, and it's fairly important to understand that when working on it. The earliest commits in the current repository are by [Will Rennie](https://github.com/willrennie), but he wasn't responsible for the original design, instead inheriting a pre-existing codebase. Will improved the codebase to some extent between May 2014 and January 2017. [Andrew Forrest](https://github.com/bunsen32) then took over briefly. Andrew is a very experienced and expert software engineer who actually likes C#, and did a considerable amount of refactoring which improved the code greatly. In March 2017 [Simon Brooke](https://github.com/simon-brooke) took over. Simon is an aging and grumpy Lisp hacker who loathes everything produced by Microsoft generally, and C# particularly, with a passion. Simon has hacked around the codebase and made stuff work. | ||
|
||
But this tangled history leads to a variety of styles, and this can be hard to follow. | ||
|
||
Parts of the original codebase were startlingly bad, with tangled nests of GOTO statements; Simon has a suspicion that the original code was produced using a nasty point-and-drool paint-an-app tool by some *Microsoft Certified Software Professional*, probably originally as Visual BASIC, and then automatically converted to C# with some equally nasty tool. He can find no other explanation for its deep horridness. There was no design documentation, or if there was it has long been lost. There was no inline documentation. Consequently everyone working on it since has been working blind; we've all tried to improve it in our different ways, and on the whole the general quality is now much better. | ||
|
||
Parts of the ugliness remain, however. | ||
|
||
The original code makes heavy use of Hungarian notation, and nothing conformed to normal C# naming conventions. The conventional Microsoft Settings class was not used, but instead a custom 'clsSettings'; and classes were originally primarily in the SuiteCRMAddIn namespace with no real structure. | ||
|
||
This is being improved, gradually. Newly created forms and dialogs, for example, are now in the namespace SuiteCRMAddin.Dialogs, and have class names ending in **Dialog**, whereas older forms and dialogs are found in SuiteCRMAddIn with names prefixed **frm**. The intention is that they should gradually be migrated. | ||
|
||
Broadly, all inline documentation has been written by Simon; at the point that he took over there was very little inline documentation at all. He is to be blamed, therefore, for all the bits that are wrong or out of date. | ||
|
||
|