76 const Data& methodText,
77 TransactionUser* tu=0);
79 void rewriteRequest(
const Uri& rewrite);
80 void handle(DnsResult*);
81 void handleSync(DnsResult*);
83 void processStateless(TransactionMessage* msg);
84 void processClientNonInvite(TransactionMessage* msg);
85 void processClientInvite(TransactionMessage* msg);
86 void processServerNonInvite(TransactionMessage* msg);
87 void processServerInvite(TransactionMessage* msg);
88 void processClientStale(TransactionMessage* msg);
89 void processServerStale(TransactionMessage* msg);
90 void processTransportFailure(TransactionMessage* failure);
91 void processTcpConnectState(TransactionMessage* msg);
92 void processNoDnsResults();
95 void add(
const Data& tid);
96 void erase(
const Data& tid);
98 bool isClient()
const;
100 bool isRequest(TransactionMessage* msg)
const;
101 bool isInvite(TransactionMessage* msg)
const;
102 bool isTimer(TransactionMessage* msg)
const;
103 bool isResponse(TransactionMessage* msg,
int lower=100,
int upper=699)
const;
104 bool isFromTU(TransactionMessage* msg)
const;
105 bool isFromWire(TransactionMessage* msg)
const;
106 bool isTransportError(TransactionMessage* msg)
const;
107 bool isTcpConnectState(TransactionMessage* msg)
const;
108 bool isSentReliable(TransactionMessage* msg)
const;
109 bool isSentUnreliable(TransactionMessage* msg)
const;
110 bool isReliabilityIndication(TransactionMessage* msg)
const;
111 bool isSentIndication(TransactionMessage* msg)
const;
112 bool isAbandonServerTransaction(TransactionMessage* msg)
const;
113 bool isCancelClientTransaction(TransactionMessage* msg)
const;
114 void sendToTU(TransactionMessage* msg);
115 static void sendToTU(TransactionUser* tu,
TransactionController& controller, TransactionMessage* msg);
116 void sendCurrentToWire();
117 void onSendSuccess();
118 SipMessage* make100(SipMessage* request)
const;
119 void terminateClientTransaction(
const Data& tid);
120 void terminateServerTransaction(
const Data& tid);
121 const Data& tid(SipMessage* sip)
const;
123 void startServerNonInviteTimerTrying(SipMessage& sip,
const Data& tid);
125 static TransactionState* makeCancelTransaction(TransactionState* tran, Machine machine,
const Data& tid);
126 static void handleInternalCancel(SipMessage* cancel,
127 TransactionState& clientInvite);
136 void saveOriginalContactAndVia(
const SipMessage& msg);
137 void restoreOriginalContactAndVia();
138 void resetNextTransmission(SipMessage* msg)
140 delete mNextTransmission;
141 mNextTransmission=msg;
142 mMsgToRetransmit.
clear();
154 Tokens* mPendingCancelReasons;
155 void setPendingCancelReasons(
const Tokens* reasons);
166 SipMessage* mNextTransmission;
167 SendData mMsgToRetransmit;
170 DnsResult* mDnsResult;
175 Tuple mResponseTarget;
179 std::unique_ptr<NameAddr> mOriginalContact;
180 std::unique_ptr<Via> mOriginalVia;
188 unsigned int mCurrentResponseCode;
191 PendingOperation mPendingOperation;
192 TransactionUser* mTransactionUser;
195 bool mTcpConnectTimerStarted;