<commit_before>-module(cmem).

-export([initCMEM/2, delCMEM/1, updateClient/4, getClientNNr/2]).

% Initialisieren des CMEM
initCMEM(RemTime, Datei) ->
  werkzeug:logging(Datei, lists:concat(["CMEM>>> initialized with ", RemTime, " ms remaining time\n"])),
  [[], RemTime].

% Löschen des CMEM
delCMEM(_CMEM) -> ok.

% Speichern/Aktualisieren eines Clients in dem CMEM
updateClient([CMEMList, RemTime], ClientID, NNr, Datei) ->
  ClientTS = werkzeug:getUTC(),
  werkzeug:logging(Datei, lists:concat(["CMEM>>> Client ", ClientID, " updated (", NNr, "/", ClientTS, ")\n"])),
  [lists:keystore(ClientID, 1, CMEMList, {ClientID, NNr, ClientTS}), RemTime].

% Abfrage welche Nachrichtennummer der Client als nächstes erhalten darf
getClientNNr([CMEMList, RemTime], ClientID) ->
  Existent = lists:keymember(ClientID, 1, CMEMList),
  getClientNNr([CMEMList, RemTime], ClientID, Existent).

% Unbekannter Client
getClientNNr(_CMEM, _ClientID, false) -> 1;

% Bekannter Client, Zeit abgelaufen? JA -> 1, NEIN, NNr + 1
getClientNNr([CMEMList, RemTime], ClientID, true) ->
  {ClientID, NNr, ClientTimestamp} = lists:keyfind(ClientID, 1, CMEMList),
  Duration = ClientTimestamp + RemTime,
  Now = werkzeug:getUTC(),
  if
    Duration >= Now -> NNr + 1;
    true -> 1
  end.<commit_msg>PID has to be converted into list for logging<commit_after>-module(cmem).

-export([initCMEM/2, delCMEM/1, updateClient/4, getClientNNr/2]).

% Initialisieren des CMEM
initCMEM(RemTime, Datei) ->
  werkzeug:logging(Datei, lists:concat(["CMEM>>> initialized with ", RemTime, " ms remaining time\n"])),
  [[], RemTime].

% Löschen des CMEM
delCMEM(_CMEM) -> ok.

% Speichern/Aktualisieren eines Clients in dem CMEM
updateClient([CMEMList, RemTime], ClientID, NNr, Datei) ->
  ClientTS = werkzeug:getUTC(),
  werkzeug:logging(Datei, lists:concat(["CMEM>>> Client ", pid_to_list(ClientID), " updated (", NNr, "/", ClientTS, ")\n"])),
  [lists:keystore(ClientID, 1, CMEMList, {ClientID, NNr, ClientTS}), RemTime].

% Abfrage welche Nachrichtennummer der Client als nächstes erhalten darf
getClientNNr([CMEMList, RemTime], ClientID) ->
  Existent = lists:keymember(ClientID, 1, CMEMList),
  getClientNNr([CMEMList, RemTime], ClientID, Existent).

% Unbekannter Client
getClientNNr(_CMEM, _ClientID, false) -> 1;

% Bekannter Client, Zeit abgelaufen? JA -> 1, NEIN, NNr + 1
getClientNNr([CMEMList, RemTime], ClientID, true) ->
  {ClientID, NNr, ClientTimestamp} = lists:keyfind(ClientID, 1, CMEMList),
  Duration = ClientTimestamp + RemTime,
  Now = werkzeug:getUTC(),
  if
    Duration >= Now -> NNr + 1;
    true -> 1
  end.
{'fraction_non_alphanumeric': 0.15271885846509833, 'fraction_numerical': 0.009255688391824142, 'mean_word_length': 5.190930787589499, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 35, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5683108', 'n_tokens_mistral': 989, 'n_tokens_neox': 957, 'n_words': 227}