BotEx.Behaviours.BufferingStrategy behaviour (bot_ex v1.0.2)

The behaviour for a module that implements a message buffering strategy

Summary

Callbacks

This function calling on start BotEx.Routing.MessageHandler and must return struct for saving incoming messages

Return messages for send from buffer

Reset buffer values by key

This function call on one buffer flushing for planning next buffer flush. Must send {:flush_buffer, bot, handler} message to handler_pid

This function calling on start BotEx.Routing.MessageHandler and create a plan for flush all buffers from create_buffers

This function calling on receive new messages and must put it on them a place in buffer struct from create_buffers

Callbacks

create_buffers(handlers)

@callback create_buffers(handlers :: map()) :: map()

This function calling on start BotEx.Routing.MessageHandler and must return struct for saving incoming messages

Parameters

  • handlers: handlers map as in config parameter handlers return buffer struct

get_messages(buffer, key)

@callback get_messages(buffer :: map(), key :: any()) :: [BotEx.Models.Message.t(), ...]

Return messages for send from buffer

Parameters:

  • buffer: current buffer
  • key: any key for getting messages from buffer

return list of messages for sending

reset_buffer(buffer, key)

@callback reset_buffer(buffer :: map(), key :: any()) :: map()

Reset buffer values by key

Parameters:

  • buffer: current buffer
  • key: any key for delete messages from buffer

schedule_buffer_flush(key, buffering_time, handler_pid)

@callback schedule_buffer_flush(
  key :: any(),
  buffering_time :: integer(),
  handler_pid :: pid()
) :: reference()

This function call on one buffer flushing for planning next buffer flush. Must send {:flush_buffer, bot, handler} message to handler_pid

Parameters:

return reference from Process.send_after

schedule_flush_all(handlers, default_buffering_time, handler_pid)

@callback schedule_flush_all(
  handlers :: map(),
  default_buffering_time :: integer(),
  handler_pid :: pid()
) :: map()

This function calling on start BotEx.Routing.MessageHandler and create a plan for flush all buffers from create_buffers

Parameters:

  • handlers: map of handlers as in config
  • default_buffering_time: default buffering time from config, can be replaced for the handler
  • handler_pid: pid of BotEx.Routing.MessageHandler

return handlers map

update_buffers_from_messages(msg_list, current_buffer)

@callback update_buffers_from_messages(
  msg_list :: [BotEx.Models.Message.t(), ...],
  current_buffer :: map()
) ::
  map()

This function calling on receive new messages and must put it on them a place in buffer struct from create_buffers

Parameters

  • msg_list: list of new messages
  • current_buffer: buffer with messages

return new buffer with added messages