📄 megaco_config.erl
字号:
%%----------------------------------------------------------------------%% Func: handle_cast/2%% Returns: {noreply, State} |%% {noreply, State, Timeout} |%% {stop, Reason, State} (terminate/2 is called)%%----------------------------------------------------------------------handle_cast({trans_sender_exit, Reason, CH}, S) -> warning_msg("transaction sender [~p] restarting: " "~n~p", [CH, Reason]), case lookup_local_conn(CH) of [] -> error_msg("connection data not found for ~p~n" "when restarting transaction sender", [CH]); [CD] -> CD2 = trans_sender_start(CD#conn_data{trans_sender = undefined}), ets:insert(megaco_local_conn, CD2) end, {noreply, S};handle_cast(Msg, S) -> warning_msg("received unexpected message: " "~n~w", [Msg]), {noreply, S}.%%----------------------------------------------------------------------%% Func: handle_info/2%% Returns: {noreply, State} |%% {noreply, State, Timeout} |%% {stop, Reason, State} (terminate/2 is called)%%----------------------------------------------------------------------handle_info({'EXIT', Pid, Reason}, S) when Pid == S#state.parent_pid -> {stop, Reason, S};handle_info(Info, S) -> warning_msg("received unknown info: " "~n~w", [Info]), {noreply, S}.%%----------------------------------------------------------------------%% Func: terminate/2%% Purpose: Shutdown the server%% Returns: any (ignored by gen_server)%%----------------------------------------------------------------------terminate(_Reason, _State) -> ok.%%----------------------------------------------------------------------%% Func: code_change/3%% Purpose: Convert process state when code is changed%% Returns: {ok, NewState}%%----------------------------------------------------------------------code_change(_Vsn, S, upgrade_from_pre_3_6) -> upgrade_user_info_pre_3_6(), upgrade_conn_data_pre_3_6(), {ok, S};code_change(_Vsn, S, upgrade_from_pre_3_5_1) -> upgrade_user_info_pre_3_5_1(), upgrade_conn_data_pre_3_5_1(), {ok, S};code_change(_Vsn, S, downgrade_to_pre_3_6) -> downgrade_user_info_pre_3_6(), downgrade_conn_data_pre_3_6(), {ok, S};code_change(_Vsn, S, downgrade_to_pre_3_5_1) -> downgrade_user_info_pre_3_5_1(), downgrade_conn_data_pre_3_5_1(), {ok, S};code_change(_Vsn, S, _Extra) -> {ok, S}.%% -- Upgrade user info --upgrade_user_info_pre_3_6() -> NewValues = [{resend_indication, false}, {cancel, false}], upgrade_user_info(NewValues).upgrade_user_info_pre_3_5_1() -> NewValues = [{cancel, false}], upgrade_user_info(NewValues).upgrade_user_info(NewValues) -> Users = [default|system_info(users)], F = fun({Item, Val}) -> upgrade_user_info(Users, Item, Val) end, lists:foreach(F, NewValues), ok.upgrade_user_info(Users, Item, Val) -> F = fun(User) -> do_update_user(User, Item, Val) end, lists:foreach(F, Users), ok.%% -- Downgrade user info --downgrade_user_info_pre_3_6() -> NewItems = [cancel], downgrade_user_info(NewItems).downgrade_user_info_pre_3_5_1() -> NewItems = [resend_indication, cancel], downgrade_user_info(NewItems).downgrade_user_info(NewItems) -> Users = [default|system_info(users)], F = fun(Item) -> downgrade_user_info(Users, Item) end, lists:foreach(F, NewItems), ok. downgrade_user_info(Users, Item) -> F = fun(User) -> do_downgrade_user_info(User, Item) end, lists:foreach(F, Users), ok.do_downgrade_user_info(User, Item) -> ets:delete(megaco_config, {User, Item}). %% -- Upgrade conn data --upgrade_conn_data_pre_3_6() -> Conns = system_info(connections), ResendIndDefault = false, Defaults = [ResendIndDefault], upgrade_conn_data(Conns, Defaults).upgrade_conn_data_pre_3_5_1() -> Conns = system_info(connections), CancelDefault = false, ResendIndDefault = false, Defaults = [CancelDefault, ResendIndDefault], upgrade_conn_data(Conns, Defaults).upgrade_conn_data(Conns, Defaults) -> F = fun(CH) -> case lookup_local_conn(CH) of [] -> ok; [CD] -> do_upgrade_conn_data(CD, Defaults) end end, lists:foreach(F, Conns), ok.do_upgrade_conn_data(OldStyleCD, Defaults) -> NewStyleCD = new_conn_data(OldStyleCD, Defaults), ets:insert(megaco_local_conn, NewStyleCD). %% From pre-3.5.1new_conn_data({conn_data, CH, Serial, MaxSerial, ReqTmr, LongReqTmr, AutoAck, TransAck, TransAckMaxCnt, TransReq, TransReqMaxCnt, TransReqMaxSz, TransTmr, TransSndr, PendingTmr, SentPendingLimit, RecvPendingLimit, ReplyTmr, CtrPid, MonRef, Sendmod, SendHandle, EncodeMod, EncodeConf, ProtV, AuthData, UserMod, UserArgs, ReplyAction, ReplyData, Threaded, StrictVersion, LongReqResend %% Cancel - This is where to insert the new value %% ResendIndication - This is where to insert the new value }, [CancelDefault, ResendIndDefault]) -> #conn_data{conn_handle = CH, serial = Serial, max_serial = MaxSerial, request_timer = ReqTmr, long_request_timer = LongReqTmr, auto_ack = AutoAck, trans_ack = TransAck, trans_ack_maxcount = TransAckMaxCnt, trans_req = TransReq, trans_req_maxcount = TransReqMaxCnt, trans_req_maxsize = TransReqMaxSz, trans_timer = TransTmr, trans_sender = TransSndr, pending_timer = PendingTmr, sent_pending_limit = SentPendingLimit, recv_pending_limit = RecvPendingLimit, reply_timer = ReplyTmr, control_pid = CtrPid, monitor_ref = MonRef, send_mod = Sendmod, send_handle = SendHandle, encoding_mod = EncodeMod, encoding_config = EncodeConf, protocol_version = ProtV, auth_data = AuthData, user_mod = UserMod, user_args = UserArgs, reply_action = ReplyAction, reply_data = ReplyData, threaded = Threaded, strict_version = StrictVersion, long_request_resend = LongReqResend, cancel = CancelDefault, % The new value resend_indication = ResendIndDefault % The new value };%% From pre-3.6 (but not pre-3.5.1)new_conn_data({conn_data, CH, Serial, MaxSerial, ReqTmr, LongReqTmr, AutoAck, TransAck, TransAckMaxCnt, TransReq, TransReqMaxCnt, TransReqMaxSz, TransTmr, TransSndr, PendingTmr, SentPendingLimit, RecvPendingLimit, ReplyTmr, CtrPid, MonRef, Sendmod, SendHandle, EncodeMod, EncodeConf, ProtV, AuthData, UserMod, UserArgs, ReplyAction, ReplyData, Threaded, StrictVersion, LongReqResend, Cancel %% ResendIndication - This is where to insert the new value }, [ResendIndDefault]) -> #conn_data{conn_handle = CH, serial = Serial, max_serial = MaxSerial, request_timer = ReqTmr, long_request_timer = LongReqTmr, auto_ack = AutoAck, trans_ack = TransAck, trans_ack_maxcount = TransAckMaxCnt, trans_req = TransReq, trans_req_maxcount = TransReqMaxCnt, trans_req_maxsize = TransReqMaxSz, trans_timer = TransTmr, trans_sender = TransSndr, pending_timer = PendingTmr, sent_pending_limit = SentPendingLimit, recv_pending_limit = RecvPendingLimit, reply_timer = ReplyTmr, control_pid = CtrPid, monitor_ref = MonRef, send_mod = Sendmod, send_handle = SendHandle, encoding_mod = EncodeMod, encoding_config = EncodeConf, protocol_version = ProtV, auth_data = AuthData, user_mod = UserMod, user_args = UserArgs, reply_action = ReplyAction, reply_data = ReplyData, threaded = Threaded, strict_version = StrictVersion, long_request_resend = LongReqResend, cancel = Cancel, resend_indication = ResendIndDefault % The new value }.%% -- Downgrade conn data --downgrade_conn_data_pre_3_6() -> Conns = system_info(connections), Fields = [resend_indication], downgrade_conn_data(Conns, Fields).downgrade_conn_data_pre_3_5_1() -> Conns = system_info(connections), Fields = [cancel, resend_indication], downgrade_conn_data(Conns, Fields).downgrade_conn_data(Conns, Fields) -> F = fun(CH) -> case lookup_local_conn(CH) of [] -> ok; [CD] -> do_downgrade_conn_data(CD, Fields) end end, lists:foreach(F, Conns).do_downgrade_conn_data(NewStyleCD, Fields) -> OldStyleCD = old_conn_data(NewStyleCD, Fields), ets:insert(megaco_local_conn, OldStyleCD).%% To pre-3.5.1old_conn_data(#conn_data{conn_handle = CH, serial = Serial, max_serial = MaxSerial, request_timer = ReqTmr, long_request_timer = LongReqTmr, auto_ack = AutoAck, trans_ack = TransAck, trans_ack_maxcount = TransAckMaxCnt, trans_req = TransReq, trans_req_maxcount = TransReqMaxCnt, trans_req_maxsize = TransReqMaxSz, trans_timer = TransTmr, trans_sender = TransSndr, pending_timer = PendingTmr, sent_pending_limit = SentPendingLimit, recv_pending_limit = RecvPendingLimit, reply_timer = ReplyTmr, control_pid = CtrPid, monitor_ref = MonRef, send_mod = Sendmod, send_handle = SendHandle, encoding_mod = EncodeMod, encoding_config = EncodeConf, protocol_version = ProtV, auth_data = AuthData, user_mod = UserMod, user_args = UserArgs, reply_action = ReplyAction, reply_data = ReplyData, threaded = Threaded, strict_version = StrictVersion, long_request_resend = LongReqResend %% cancel = Cancel %% resend_indication = ResendIndication }, [cancel, resend_indication]) -> {conn_data, CH, Serial, MaxSerial, ReqTmr, LongReqTmr, AutoAck, TransAck, TransAckMaxCnt, TransReq, TransReqMaxCnt, TransReqMaxSz,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -