kalbi
kalbi copied to clipboard
Finish Client/Server Transactions FSM
func (tm *TransactionManager) NewServerTransaction(msg *message.SipMsg) *ServerTransaction {
tx := new(ServerTransaction)
tx.FSM = fsm.NewFSM("", fsm.Events{
{Name: server_input_request, Src: []string{""}, Dst: "Proceeding"},
{Name: server_input_user_1xx, Src: []string{"Proceeding"}, Dst: "Proceeding"},
{Name: server_input_user_300_plus , Src: []string{"Proceeding"}, Dst: "Completed"},
{Name: server_input_ack, Src: []string{"Completed"}, Dst: "Confirmed"},
{Name: "Terminated", Src: []string{ "Proceeding"}, Dst: "Terminated"},
}, fsm.Callbacks{})
tx.BranchID = string(msg.Via[0].Branch)
tx.Origin = msg
tm.TX[string(msg.Via[0].Branch)] = tx
return tx
}