Module ocs_event
This gen_event behaviour callback
module implements an event handler of the
ocs application.
Copyright © 2020 - 2026 SigScale Global Inc.
Behaviours: gen_event.
This gen_event behaviour callback
module implements an event handler of the
ocs application.
aka_cred() = #aka_cred{k = binary(), opc = binary(), dif = integer()}
bucket_attributes() = #{bucket_type := normal | session, from_bucket => [bucket_source()], reservations => reservations()}
bucket_source() = #{id := string(), amount := pos_integer(), unit_size := pos_integer(), unit_price := pos_integer(), expire := pos_integer() | undefined}
bucket_status() = active | expired | suspended
offer_status() = in_study | in_design | in_test | active | rejected | launched | retired | obsolete
pla_ref() = #pla_ref{id = string() | undefined | '_', href = string() | undefined | '_', name = string() | undefined | '_', class_type = string() | undefined | '_', base_type = string() | undefined | '_', schema = string() | undefined | '_', ref_type = string() | undefined | '_'}
product_price_type() = recurring | one_time | usage | tariff | pla_ref()
product_status() = created | pending_active | aborted | cancelled | active | suspended | pending_terminate | terminated
quantity() = #quantity{amount = integer(), units = atom() | string()}
range() = #range{lower = quantity(), upper = quantity()}
rate() = #rate{numerator = quantity(), denominator = quantity()}
recur_period() = hourly | daily | weekly | monthly | yearly
reservation() = #{ts := pos_integer(), debit := non_neg_integer(), reserve := non_neg_integer(), service_id => non_neg_integer(), charging_key => non_neg_integer()}
reservations() = #{SesssionID::list() => reservation()}
resource_char() = #resource_char{name = string() | undefined | '_', class_type = string() | undefined | '_', schema = string() | undefined | '_', value = term() | undefined | '_'}
resource_rel() = #resource_rel{id = string() | undefined | '_', href = string() | undefined | '_', name = string() | undefined | '$4' | '_', type = string() | undefined | '_', referred_type = string() | undefined | '_'}
service_status() = feasibilityChecked | designed | reserved | active | inactive | terminated
specification_ref() = #specification_ref{id = string() | undefined | '_' | '$3', href = string() | undefined | '_', name = string() | undefined | '_', version = string() | undefined | '_'}
state() = #state{fsm = pid(), id = string(), category = atom()}
notify(EventType, EventPayLoad, Category) -> ok
- EventType = create_bucket | delete_bucket | charge | depleted | accumulated | create_product | delete_product | create_service | delete_service | create_offer | delete_offer | create_resource | delete_resource | log_acct
- EventPayLoad = #bucket{id = string() | undefined | '_' | '$1', name = string() | undefined | '_', start_date = pos_integer() | undefined | '_', end_date = pos_integer() | undefined | '_', status = bucket_status() | undefined | '_', remain_amount = integer() | '_', attributes = bucket_attributes() | '_', units = octets | cents | seconds | messages | undefined | '_', price = string() | '_', product = [ProdRef::term()] | '_', last_modified = tuple() | undefined | '_'} | #product{id = string() | undefined | '_' | '$1', name = string() | undefined | '_' | '$2', start_date = pos_integer() | undefined | '_' | '$4', end_date = pos_integer() | undefined | '_' | '$5', status = product_status() | undefined | '_', product = string() | undefined | '_' | '$3', characteristics = [{Name::string(), Value::term()}] | '_', payment = [{Price::string(), DueDate::pos_integer()}] | '_', balance = [BucketRef::term()] | '_', service = [ServiceRef::binary()] | '_', last_modified = tuple() | undefined | '_'} | #service{name = binary() | undefined | '_', start_date = pos_integer() | undefined | '_', end_date = pos_integer() | undefined | '_', state = service_status() | undefined | '_', password = binary() | aka_cred() | undefined | '_', attributes = [tuple()] | undefined | '_', product = (ProductRef::string() | undefined | '_'), enabled = boolean() | '_', disconnect = boolean() | '_', session_attributes = [{TS::pos_integer(), Attributes::[tuple()]}] | '_', characteristics = [{Name::string(), Value::term()}] | '_', multisession = boolean() | '_', last_modified = tuple() | undefined | '_'} | #offer{name = string() | undefined | '_' | '$1' | '$3', description = string() | undefined | '_', start_date = pos_integer() | undefined | '_', end_date = pos_integer() | undefined | '_', status = offer_status() | '_' | undefined | '_', specification = string() | undefined | '_', bundle = [#bundled_po{name = string() | undefined, status = offer_status() | undefined, lower_limit = non_neg_integer() | undefined, upper_limit = non_neg_integer() | undefined, default = non_neg_integer() | undefined}] | '_', price = [#price{name = string() | undefined, description = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, type = product_price_type() | undefined, period = recur_period() | undefined, units = cents | octets | seconds | messages | undefined, size = integer() | undefined, amount = integer() | undefined, currency = string() | undefined, char_value_use = [#char_value_use{name = string() | undefined, description = string() | undefined, type = string() | undefined, min = non_neg_integer() | undefined, max = pos_integer() | undefined, specification = '_' | string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, values = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}]}], alteration = #alteration{name = string() | undefined, description = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, type = product_price_type() | undefined, period = recur_period() | undefined, units = cents | octets | seconds | messages | undefined, size = integer() | undefined, amount = integer() | undefined, currency = string() | undefined} | undefined}] | '_', char_value_use = [#char_value_use{name = string() | undefined, description = string() | undefined, type = string() | undefined, min = non_neg_integer() | undefined, max = pos_integer() | undefined, specification = '_' | string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, values = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}]}] | '_', last_modified = tuple() | undefined | '_'} | {Table, #gtt{num = string() | '_' | '$1', value = tuple() | undefined | '_' | '$2'}} | #resource{id = string() | undefined | '$1' | '_', href = string() | undefined | '_', name = string() | undefined | '_' | '$2', description = string() | undefined | '_', category = string() | undefined | '_', class_type = string() | undefined | '_', base_type = string() | undefined | '_', schema = string() | undefined | '_', state = string() | undefined | '_', substate = string() | undefined | '_', version = string() | undefined | '_', start_date = pos_integer() | undefined | '_', end_date = pos_integer() | undefined | '_', last_modified = {TS::pos_integer(), N::pos_integer()} | undefined | '_', related = [resource_rel()] | '_', specification = specification_ref() | undefined | '_', characteristic = [resource_char()] | '_'} | [#adjustment{id = string() | undefined | '_' | '$1', type = string() | undefined | '_', description = string() | undefined | '_', reason = string() | undefined | '_', amount = integer() | undefined | '_', units = octets | cents | seconds | messages | undefined | '_', start_date = pos_integer() | undefined | '_', end_date = pos_integer() | undefined | '_', product = (ProdRef::term() | '_'), service = (ServiceRef::term() | '_'), bucket = (BucketRef::term() | '_')}] | [#acc_balance{id = string() | undefined, name = string() | undefined, total_balance = [quantity()] | undefined, bucket = [string()], product = [string()]}] | ocs_log:acct_event()
- Table = atom()
- Category = balance | product | service | resource | usage
Send a notification event.
The EventPayload should contain the entire new resource (create),
the updated attributes only (attributeValueChange) or only
id and href (remove).
init(Args) -> Result
- Args = list()
- Result = {ok, State} | {ok, State, hibernate} | {error, State::term()}
- State = state()
Initialize the ocs_event server.
See also: //stdlib/gen_event:init/1.
handle_event(Event, State) -> Result
- Event = term()
- State = state()
- Result = {ok, NewState} | {ok, NewState, hibernate} | {swap_handler, Args1, NewState, Handler2, Args2} | remove_handler
- NewState = state()
- Args1 = term()
- Args2 = term()
- Handler2 = Module2 | {Module2, Id}
- Module2 = atom()
- Id = term()
Handle a request sent using gen_event:notify/2, gen_event:sync_notify/2.
handle_call(Request, Fsm) -> Result
- Request = term()
- Fsm = pid()
- Result = {ok, Reply::term(), NewFsm::pid()} | {ok, Reply::term(), NewFsm::pid(), hibernate} | {swap_handler, Reply::term(), Args1::term(), NewFsm::pid(), Handler2::Module2 | {Module2, Id}, Args2::term()} | {remove_handler, Reply::term()}
- Module2 = atom()
- Id = term()
Handle a request sent using gen_event:call/3,4.
See also: //stdlib/gen_event:handle_call/3.
handle_info(Info, Fsm) -> Result
- Info = term()
- Fsm = pid()
- Result = {ok, NewState::term()} | {ok, NewState::term(), hibernate} | {swap_handler, Args1::term(), NewState::term(), Handler2, Args2::term()} | remove_handler
- Handler2 = Module2 | {Module2, Id}
- Module2 = atom()
- Id = term()
Handle a received message.
See also: //stdlib/gen_event:handle_info/2.
terminate(Arg, Fsm) -> term()
- Arg = term() | {stop, Reason::term()} | {error, term()} | stop | remove_handler | {error, {'EXIT', Reason::term()}}
- Fsm = pid()
Cleanup and exit.
See also: //stdlib/gen_event:terminate/3.
code_change(OldVsn, State, Extra) -> Result
- OldVsn = term() | {down, term()}
- State = term()
- Extra = term()
- Result = {ok, NewState::term()}
Update internal state data during a release upgrade/downgrade.
See also: //stdlib/gen_event:code_change/3.
Generated by EDoc