Als Neuling, Schreiben einer Spielzeug-Matching-Engine (Handel) mit gen_server.Erlang: gen_server - Antwort auf zwei Clients
Sobald ein Trade/Match auftritt, müssen beide Clients benachrichtigt werden.
Dokumentation sagt, dass:
reply(Client, Reply) -> Result
Arten:
Client - see below Reply = term() Result = term()
Diese Funktion kann durch eine gen_server verwendet werden explizit an einen Client eine Antwort zu senden, die
call/2,3
odermulti_call/2,3,4
, aufgerufen, wenn Die Antwort kann nicht im RückgabewertModule:handle_call/3
definiert werden.Client muss das Von-Argument für die Callback-Funktion sein. Antwort ist ein beliebiger Begriff, der als Rückgabewert von
call/2,3
odermulti_call/2,3,4
an dem Client zurückgegeben wird. Der Rückgabewert Ergebnis wird nicht weiter definiert und sollte immer ignoriert werden.
Angesichts der oben genannten wie ist es möglich, eine Benachrichtigung an den anderen Client zu senden.
SAMPLE Folge von Aktionen
C1 -> Place order IBM,BUY,100,10.55
Server -> Ack C1 for order
C2 -> Place order IBM,SELL,100,10.55
Server -> Ack C2 for order
-> Trade notification to C2
-> Trade notification to C1 %% Can I use gen_server:reply()
%% If yes - How ?
Danke zur Klarstellung, würde dies bedeuten, dass gen_server, ist nicht für eine Trading-Engine geeignet, würde es sinnvoll sein, die anderen gen_ * zu verwenden, die eine empfohlen wird. – CSP
@CSP, ich sage nicht, dass gen_server ist unangemessen, ich sage nicht, es ist die beste Lösung. Ich glaube, Sie können damit beginnen, aber vielleicht möchten Sie diese Entscheidung später ändern. – Lol4t0