Module ocs_rest_hub_fsm
Copyright © 2020 - 2026 SigScale Global Inc.
Behaviours: gen_fsm.
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 | '_'}
statedata() = #statedata{id = string(), profile = atom(), module = atom(), function = atom(), query = string(), callback = string(), href = string(), authorization = string() | undefined, args = list() | undefined, sync = boolean()}
start_link(Query, Callback, Uri) -> Result
- Query = string()
- Callback = string()
- Uri = string()
- Result = {ok, HubFsm} | {error, Reason}
- HubFsm = pid()
- Reason = term()
Start a hub fsm
start_link(Query, Callback, Uri, Authorization) -> Result
- Query = string()
- Callback = string()
- Uri = string()
- Authorization = string()
- Result = {ok, HubFsm} | {error, Reason}
- HubFsm = pid()
- Reason = term()
Start a hub fsm
init(Args) -> Result
- Args = list()
- Result = {ok, StateName, StateData} | {ok, StateName, StateData, Timeout} | {ok, StateName, StateData, hibernate} | {stop, Reason} | ignore
- StateName = atom()
- StateData = statedata()
- Timeout = non_neg_integer() | infinity
- Reason = term()
Initialize the ocs_rest_hub_fsm fsm.
See also: //stdlib/gen_fsm:init/1.
register(Event, State) -> Result
- Event = timeout | pos_integer()
- State = statedata()
- Result = {next_state, NextStateName, NewStateData} | {next_state, NextStateName, NewStateData, timeout} | {next_state, NextStateName, NewStateData, hibernate} | {stop, Reason, NewStateData}
- NextStateName = atom()
- NewStateData = statedata()
- Reason = normal | term()
Handle event received in register state.
registered(Event, State) -> Result
- Event = {Type, Resource, Category}
- Type = 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
- Resource = #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 | '_'} | #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()
- Category = balance | product | service | resource | usage
- State = statedata()
- Result = {next_state, NextStateName, NewStateData} | {next_state, NextStateName, NewStateData, timeout} | {next_state, NextStateName, NewStateData, hibernate} | {stop, Reason, NewStateData}
- NextStateName = atom()
- NewStateData = statedata()
- Reason = normal | term()
Handle event received in registered state.
handle_event(Event, StateName, State) -> Result
- Event = term()
- StateName = atom()
- State = statedata()
- Result = {next_state, NextStateName, NewStateData} | {next_state, NextStateName, NewStateData, Timeout} | {next_state, NextStateName, NewStateData, hibernate} | {stop, Reason, NewStateData}
- NextStateName = atom()
- NewStateData = statedata()
- Timeout = non_neg_integer() | infinity
- Reason = normal | term()
Handle a request sent using
//stdlib/gen_fsm:send_all_state_event/2.
handle_sync_event(Event, From, StateName, StateData) -> Result
- Event = term()
- From = {Pid, Tag}
- Pid = pid()
- Tag = term()
- StateName = atom()
- StateData = statedata()
- Result = {reply, Reply, NextStateName, NewStateData} | {reply, Reply, NextStateName, NewStateData, Timeout} | {reply, Reply, NextStateName, NewStateData, hibernate} | {next_state, NextStateName, NewStateData} | {next_state, NextStateName, NewStateData, Timeout} | {next_state, NextStateName, NewStateData, hibernate} | {stop, Reason, Reply, NewStateData} | {stop, Reason, NewStateData}
- Reply = term()
- NextStateName = atom()
- NewStateData = statedata()
- Timeout = non_neg_integer() | infinity
- Reason = normal | term()
Handle an event sent with
gen_fsm:sync_send_all_state_event/2,3.
See also: //stdlib/gen_fsm:handle_sync_event/4.
handle_info(Info, StateName, StateData) -> Result
- Info = term()
- StateName = atom()
- StateData = statedata()
- Result = {next_state, NextStateName, NewStateData} | {next_state, NextStateName, NewStateData, Timeout} | {next_state, NextStateName, NewStateData, hibernate} | {stop, Reason, NewStateData}
- NextStateName = atom()
- NewStateData = statedata()
- Timeout = non_neg_integer() | infinity
- Reason = normal | term()
Handle a received message.
See also: //stdlib/gen_fsm:handle_info/3.
terminate(Reason, StateName, StateData) -> any()
- Reason = normal | shutdown | term()
- StateName = atom()
- StateData = statedata()
Cleanup and exit.
See also: //stdlib/gen_fsm:terminate/3.
code_change(OldVsn, StateName, StateData, Extra) -> Result
- OldVsn = term() | {down, Vsn::term()}
- StateName = atom()
- StateData = statedata()
- Extra = term()
- Result = {ok, NextStateName, NewStateData}
- NextStateName = atom()
- NewStateData = statedata()
Update internal state data during a release upgrade/downgrade.
See also: //stdlib/gen_fsm:code_change/4.
handle_async(ReplyInfo, Fsm) -> ok
- ReplyInfo = tuple()
- Fsm = pid()
Handle result of httpc:request/3.
unique() -> Result
- Result = {ID, TS}
- TS = pos_integer()
- ID = string()
Generate a unique identifier.
Generated by EDoc