Topic Context
- Module 1
- The worst welcome E001
- Messaging basics E002
- Commanding your words E003
- Event sourcing basics E004
- Aggregating stories E005
- Community Code and questions 1 E006
- Re-Factory E007
- Frameworks over forms is a design obsession E008
void Main() | |
{ | |
dynamic processor = null; | |
bool stopRequested; | |
while(!stopRequested) | |
{ |
public class FetchEventStoreProcessor : ICommandProcessor | |
{ | |
public string Key { get { return "FETCH"; } } | |
public string Usage { get { return "FETCH <remoteConfig> [<folderNameInLokadData>]"; } } | |
public bool Execute(CommandProcessorContext context, CancellationToken token, string[] args) | |
{ | |
if (args == null || args.Length == 0) | |
{ | |
context.Log.Error("No remoteConfig provided."); |
Topic Context
// This is slightly advanced usage scenario of Lokad A+ES tests, that shows | |
// setting up test implementations of domain services in ES+friendly way | |
// (really simple) that also prints out in the specifications. Price is an | |
// instance of IPricingService, used by Application service, while Clock | |
// is a static singleton actually. | |
[Test] | |
public void with_multiple_entries_and_previous_balance() |
// sample unit test for a command "LockUser" | |
public class lock_user : user_syntax | |
{ | |
static readonly UserId id = new UserId(1); | |
static readonly SecurityId sec = new SecurityId(1); | |
static readonly TimeSpan fiveMins = TimeSpan.FromMinutes(5); | |
[Test] |
// Snippet that shows AJAX search over a denormalized projection (handled by server) in async | |
// for sending commands in async - just do the AJAX post to server | |
// for getting changes - just poll the server for view version | |
// for cases when polling is expensive - use web sockets. | |
<script type="text/javascript"> | |
$(document).ready(function () { | |
$('#searchButton').click(function () { | |
GetData($('#searchbox').val()); |
/// <summary> | |
/// Creates convention-based routing rules | |
/// </summary> | |
public sealed class RedirectToDynamicCommand | |
{ | |
readonly IDictionary<Type, Wire> _dict = new Dictionary<Type, Wire>(); | |
sealed class Wire | |
{ | |
public MethodInfo Method; |
/// <summary> | |
/// Source: https://gist.github.com/1308830 | |
/// This simple envelope includes only: | |
/// <code> | |
/// Header - int32 | |
/// TotalLength - int32 | |
/// IdLength - int32 | |
/// UTF8-encoded message ID - byte[IdLength] | |
/// ContractLength - int32 | |
/// UTF-encoded contract name 0 byte[ContractLength] |
/// <summary> | |
/// This class scans all available specifications for messages used | |
/// then performs round-trip via specified serializer, | |
/// and then does the structural comparison of resulting values | |
/// </summary> | |
[TestFixture] | |
public sealed class TestMessageSerialization | |
{ | |
static Group[] ListMessages() | |
{ |
// This is a hacky sample (that works for me) of alternative way to use Lokad-codeDSL | |
// or any similar way of generating message contracts on-the-fly. Original approach was | |
// with using T4 template, that would rebuild cs files from DSL representation, whenever | |
// we hit Ctrl-S. | |
// This approach works almost exactly like this (Ctrl-S to rebuild), but does not require VS | |
// to run or does not require unloading VS to change the underlying generator code. | |
// in fact it is extremely boring. Lolcats from MightyMoose could be used to improve the situation, though. | |
// any takers? :) |