TsgcTURNServer › Events › OnTURNCreateAllocation
Sollevato dopo che una nuova Allocation è stata creata con successo per un client.
property OnTURNCreateAllocation: TsgcTURNAllocationEvent;
// TsgcTURNAllocationEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const Allocation: TsgcTURNAllocationItem) of object
—
Generato una volta per ogni ALLOCATE riuscito, subito dopo che l'allocazione è stata aggiunta alla tabella interna del server e la AllocateResponse è stata inviata al client. Allocation espone il contesto completo: LocalIP/LocalPort (endpoint di ascolto lato server), ReflexiveIP/ReflexivePort (indirizzo mappato del client), RelayIP/RelayPort (l'indirizzo di trasporto inoltrato pubblicizzato al client tramite XOR-RELAYED-ADDRESS), Username/Realm, Lifetime / Expiry e le sotto-collezioni Permissions / Channels. Utilizzarlo per aggiornare dashboard operative, contabilità o quote per utente. L'istanza di Allocation è di proprietà del server — non liberarla; viene passata nuovamente a OnTURNDeleteAllocation alla scadenza dell'allocazione. Viene eseguito sul thread del listener a meno che NotifyEvents non lo reindirizzi.
procedure TForm1.OnTURNCreateAllocation(Sender: TObject;
const aSocket: TsgcSocketConnection; const Allocation: TsgcTURNAllocationItem);
begin
Memo1.Lines.Add(Format('Allocation created: user=%s relay=%s:%d lifetime=%d',
[Allocation.Username, Allocation.RelayIP, Allocation.RelayPort,
Allocation.Lifetime]));
end;