public abstract class SIPTransactionImpl extends Object implements SIPTransaction
| Modifier and Type | Field and Description |
|---|---|
protected Object |
applicationData |
protected long |
auditTag |
protected int |
baseTimerInterval |
protected int |
collectionTime |
protected MessageChannel |
encapsulatedChannel |
gov.nist.javax.sip.stack.SIPClientTransactionImpl.ExpiresTimerTask |
expiresTimerTask |
protected boolean |
isMapped |
protected SIPResponse |
lastResponse |
protected String |
mergeId |
protected SIPRequest |
originalRequest |
protected String |
originalRequestBranch |
protected byte[] |
originalRequestBytes |
protected long |
originalRequestCSeqNumber |
protected boolean |
originalRequestHasPort |
protected SIPTransactionStack |
sipStack |
protected int |
T2
The maximum retransmit interval for non-INVITE requests and INVITE
responses
|
protected int |
T4
5 sec Maximum duration a message will remain in the network
|
protected int |
timeoutTimerTicksLeft |
protected int |
timerD |
protected int |
timerI |
protected int |
timerK |
protected boolean |
toListener |
protected String |
transactionId |
protected AtomicBoolean |
transactionTimerStarted |
CALLING_STATE, COMPLETED_STATE, CONFIRMED_STATE, INITIAL_STATE, PROCEEDING_STATE, T1, TERMINATED_STATE, TIMER_A, TIMER_B, TIMER_F, TIMER_H, TIMER_J, TRYING_STATE| Modifier | Constructor and Description |
|---|---|
protected |
SIPTransactionImpl(SIPTransactionStack newParentStack,
MessageChannel newEncapsulatedChannel)
Transaction constructor.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
acquireSem()
A given tx can process only a single outstanding event at a time.
|
void |
addEventListener(SIPTransactionEventListener newListener)
Adds a new event listener to this transaction.
|
void |
cancelMaxTxLifeTimeTimer() |
abstract void |
cleanUp() |
void |
close()
Close the encapsulated channel.
|
void |
disableRetransmissionTimer()
Turns off retransmission events for this transaction.
|
void |
disableTimeoutTimer()
Disabled the timeout timer.
|
boolean |
doesCancelMatchTransaction(SIPRequest requestToTest)
A method that can be used to test if an incoming request belongs to this
transction.
|
protected void |
enableRetransmissionTimer()
Enables retransmission timer events for this transaction to begin in one
tick.
|
protected void |
enableRetransmissionTimer(int tickCount)
Enables retransmission timer events for this transaction to begin after
the number of ticks passed to this routine.
|
protected void |
enableTimeoutTimer(int tickCount)
Enables a timeout event to occur for this transaction after the number of
ticks passed to this method.
|
List<String> |
extractCertIdentities()
Extract identities from certificates exchanged over TLS, based on guidelines
from rfc5922.
|
void |
fireTimer()
Fired after each timer tick.
|
Object |
getApplicationData()
Get the application data associated with this transaction.
|
long |
getAuditTag() |
int |
getBaseTimerInterval() |
String |
getBranch()
Gets the current setting for the branch parameter of this transaction.
|
String |
getBranchId()
Returns a unique branch identifer that identifies this transaction.
|
String |
getCipherSuite()
Return the Cipher Suite that was used for the SSL handshake.
|
long |
getCSeq()
Get the Sequence number of the request used to create the transaction.
|
abstract Dialog |
getDialog()
Gets the dialog object of this Transaction object.
|
String |
getForkId()
Retrieves the fork id for the transaction.
|
String |
getHost()
return the ip address on which this message was initially received
|
int |
getInternalState()
Gets the current state of this transaction.
|
String |
getKey() |
SIPResponse |
getLastResponse()
Get the last response.
|
Certificate[] |
getLocalCertificates()
Get the certificate(s) that were sent to the peer during handshaking.
|
String |
getMergeId() |
MessageChannel |
getMessageChannel()
Returns the message channel used for transmitting/receiving messages for
this transaction.
|
MessageProcessor |
getMessageProcessor() |
String |
getMethod()
Get the method of the request used to create this transaction.
|
SIPRequest |
getOriginalRequest()
Gets the request being handled by this transaction.
|
String |
getPeerAddress()
Returns the IP address of the upstream/downstream hop from which this message was initially received
|
Certificate[] |
getPeerCertificates() |
InetAddress |
getPeerInetAddress() |
InetAddress |
getPeerPacketSourceAddress() |
int |
getPeerPacketSourcePort() |
int |
getPeerPort()
Returns the port of the upstream/downstream hop from which this message was initially received
|
String |
getPeerProtocol() |
int |
getPort()
return the port on which this message was initially received
|
ReleaseReferencesStrategy |
getReleaseReferencesStrategy()
retrieve the value of release references to know if the stack performs optimizations
on cleanup to save on memory
|
Request |
getRequest()
Get the original request but cast to a Request structure.
|
Response |
getResponse()
Get the JAIN interface response
|
int |
getRetransmitTimer()
Returns the current value of the retransmit timer in milliseconds used to
retransmit messages over unreliable transports.
|
SipProviderImpl |
getSipProvider()
Return the SipProvider for which the transaction is assigned.
|
SIPTransactionStack |
getSIPStack() |
TransactionState |
getState()
Gets the current state of this transaction.
|
int |
getT2() |
int |
getT4() |
int |
getTimerD()
Sets the value of Timer D (in ms)
|
int |
getTimerI() |
int |
getTimerK() |
int |
getTimerT2()
Retrieve the value of Timer T2 (in ms)
|
int |
getTimerT4()
Retrieve the value of Timer T4 (in ms)
|
String |
getTransactionId()
Get the transaction Id.
|
String |
getTransport()
Returns the name of the protocol with which this message was initially received
|
Via |
getViaHeader()
Returns the Via header for this channel.
|
String |
getViaHost()
Get the host to assign for an outgoing Request via header.
|
int |
getViaPort()
Get the port to assign for the via header of an outgoing message.
|
int |
hashCode()
Hashcode method for fast hashtable lookup.
|
boolean |
isByeTransaction()
Return a flag that states if this is a BYE transaction.
|
boolean |
isCancelTransaction()
Return true if the transaction corresponds to a CANCEL message.
|
boolean |
isDialogCreatingTransaction()
Returns a flag stating whether this transaction is for a request that creates a dialog.
|
boolean |
isInviteTransaction()
Returns a flag stating whether this transaction is for an INVITE request
or not.
|
abstract boolean |
isMessagePartOfTransaction(SIPMessage messageToTest)
Tests a message to see if it is part of this transaction.
|
boolean |
isReliable() |
boolean |
isSecure() |
boolean |
isServerTransaction()
A shortcut way of telling if we are a server transaction.
|
boolean |
isTerminated()
Tests if this transaction has terminated.
|
boolean |
isTransactionMapped() |
boolean |
passToListener()
Set true to pass the request up to the listener.
|
void |
raiseErrorEvent(int errorEventID)
Creates a SIPTransactionErrorEvent and sends it to all of the listeners
of this transaction.
|
void |
raiseIOExceptionEvent()
This realizes basic requirement form RFC 17.2.4 and 8.1.3.1
|
void |
releaseSem()
Release the transaction semaphore.
|
void |
removeEventListener(SIPTransactionEventListener oldListener)
Removed an event listener from this transaction.
|
void |
scheduleMaxTxLifeTimeTimer() |
void |
semRelease() |
void |
sendMessage(byte[] messageBytes,
InetAddress receiverAddress,
int receiverPort,
boolean retry)
Parse the byte array as a message, process it through the transaction,
and send it to the SIP peer.
|
void |
sendMessage(SIPMessage messageToSend)
Process the message through the transaction and sends it to the SIP peer.
|
void |
setApplicationData(Object applicationData)
Set the application data pointer.
|
void |
setAuditTag(long auditTag) |
void |
setBranch(String newBranch)
Sets the Via header branch parameter used to identify this transaction.
|
void |
setCollectionTime(int collectionTime) |
abstract void |
setDialog(SIPDialog sipDialog,
String dialogId)
set the dialog object.
|
void |
setEncapsulatedChannel(MessageChannel messageChannel)
Set the encapsuated channel.
|
void |
setForkId(String forkId)
Sets the fork id for the transaction.
|
void |
setOriginalRequest(SIPRequest newOriginalRequest)
Sets the request message that this transaction handles.
|
void |
setPassToListener()
Set the passToListener flag to true.
|
void |
setReleaseReferencesStrategy(ReleaseReferencesStrategy releaseReferencesStrategy)
If set to true it will release all references that it no longer needs.
|
void |
setRetransmitTimer(int retransmitTimer)
Sets the value of the retransmit timer to the newly supplied timer value.
|
void |
setState(int newState)
Changes the state of this transaction.
|
void |
setTimerD(int interval)
Sets the value of Timer D (in ms)
|
void |
setTimerT2(int interval)
Sets the value of Timer T2 (in ms)
|
void |
setTimerT4(int interval)
Sets the value of Timer T4 (in ms)
|
void |
setTransactionMapped(boolean transactionMapped) |
boolean |
testAndSetTransactionTerminatedEvent()
Flag to test if the terminated event is delivered.
|
clone, equals, finalize, getClass, notify, notifyAll, toString, wait, wait, waitfireRetransmissionTimer, fireTimeoutTimer, startTransactionTimerterminateprotected boolean toListener
protected int baseTimerInterval
protected int T4
protected int T2
protected int timerI
protected int timerK
protected int timerD
protected transient Object applicationData
protected SIPResponse lastResponse
protected boolean isMapped
protected String transactionId
protected long auditTag
protected transient SIPTransactionStack sipStack
protected SIPRequest originalRequest
protected byte[] originalRequestBytes
protected long originalRequestCSeqNumber
protected String originalRequestBranch
protected boolean originalRequestHasPort
protected transient MessageChannel encapsulatedChannel
protected AtomicBoolean transactionTimerStarted
protected int timeoutTimerTicksLeft
protected int collectionTime
protected String mergeId
public gov.nist.javax.sip.stack.SIPClientTransactionImpl.ExpiresTimerTask expiresTimerTask
protected SIPTransactionImpl(SIPTransactionStack newParentStack, MessageChannel newEncapsulatedChannel)
newParentStack - Parent stack for this transaction.newEncapsulatedChannel - Underlying channel for this transaction.public String getBranchId()
TransactiongetBranchId in interface SIPTransactiongetBranchId in interface TransactionSIPTransaction.getBranchId()public abstract void cleanUp()
cleanUp in interface SIPTransactionSIPTransaction.cleanUp()public void setOriginalRequest(SIPRequest newOriginalRequest)
SIPTransactionsetOriginalRequest in interface SIPTransactionnewOriginalRequest - Request being handled.SIPTransaction.setOriginalRequest(gov.nist.javax.sip.message.SIPRequest)public SIPRequest getOriginalRequest()
SIPTransactiongetOriginalRequest in interface SIPTransactionSIPTransaction.getOriginalRequest()public Request getRequest()
SIPTransactiongetRequest in interface SIPTransactiongetRequest in interface TransactionSIPTransaction.getRequest()public boolean isDialogCreatingTransaction()
SIPTransactionisDialogCreatingTransaction in interface SIPTransactionSIPTransaction.isDialogCreatingTransaction()public boolean isInviteTransaction()
SIPTransactionisInviteTransaction in interface SIPTransactionSIPTransaction.isInviteTransaction()public boolean isCancelTransaction()
SIPTransactionisCancelTransaction in interface SIPTransactionSIPTransaction.isCancelTransaction()public boolean isByeTransaction()
SIPTransactionisByeTransaction in interface SIPTransactionSIPTransaction.isByeTransaction()public MessageChannel getMessageChannel()
SIPTransactiongetMessageChannel in interface SIPTransactionSIPTransaction.getMessageChannel()public void setBranch(String newBranch)
SIPTransactionsetBranch in interface SIPTransactionnewBranch - New string used as the branch for this transaction.SIPTransaction.setBranch(java.lang.String)public String getBranch()
SIPTransactiongetBranch in interface SIPTransactionSIPTransaction.getBranch()public String getMethod()
SIPTransactiongetMethod in interface SIPTransactionSIPTransaction.getMethod()public long getCSeq()
SIPTransactiongetCSeq in interface SIPTransactionSIPTransaction.getCSeq()public void setState(int newState)
SIPTransactionsetState in interface SIPTransactionnewState - New state of this transaction.SIPTransaction.setState(int)public int getInternalState()
SIPTransactiongetInternalState in interface SIPTransactionSIPTransaction.getInternalState()public TransactionState getState()
SIPTransactiongetState in interface SIPTransactiongetState in interface TransactionSIPTransaction.getState()protected void enableRetransmissionTimer()
protected void enableRetransmissionTimer(int tickCount)
tickCount - Number of ticks before the next retransmission timer event
occurs.public void disableRetransmissionTimer()
SIPTransactiondisableRetransmissionTimer in interface SIPTransactionSIPTransaction.disableRetransmissionTimer()protected void enableTimeoutTimer(int tickCount)
tickCount - Number of ticks before this transaction times out.public void disableTimeoutTimer()
SIPTransactiondisableTimeoutTimer in interface SIPTransactionSIPTransaction.disableTimeoutTimer()public void fireTimer()
SIPTransactionfireTimer in interface SIPTransactionSIPTransaction.fireTimer()public boolean isTerminated()
SIPTransactionisTerminated in interface SIPTransactionSIPTransaction.isTerminated()public String getHost()
TransactionExtgetHost in interface SIPTransactiongetHost in interface TransactionExtSIPTransaction.getHost()public String getKey()
getKey in interface SIPTransactionSIPTransaction.getKey()public int getPort()
TransactionExtgetPort in interface SIPTransactiongetPort in interface TransactionExtSIPTransaction.getPort()public SIPTransactionStack getSIPStack()
getSIPStack in interface SIPTransactionSIPTransaction.getSIPStack()public String getPeerAddress()
TransactionExtgetPeerAddress in interface SIPTransactiongetPeerAddress in interface TransactionExtSIPTransaction.getPeerAddress()public int getPeerPort()
TransactionExtgetPeerPort in interface SIPTransactiongetPeerPort in interface TransactionExtSIPTransaction.getPeerPort()public int getPeerPacketSourcePort()
getPeerPacketSourcePort in interface SIPTransactionSIPTransaction.getPeerPacketSourcePort()public InetAddress getPeerPacketSourceAddress()
getPeerPacketSourceAddress in interface SIPTransactionSIPTransaction.getPeerPacketSourceAddress()public InetAddress getPeerInetAddress()
public String getPeerProtocol()
getPeerProtocol in interface SIPTransactionpublic String getTransport()
TransactionExtgetTransport in interface SIPTransactiongetTransport in interface TransactionExtSIPTransaction.getTransport()public boolean isReliable()
isReliable in interface SIPTransactionSIPTransaction.isReliable()public Via getViaHeader()
SIPTransactiongetViaHeader in interface SIPTransactionSIPTransaction.getViaHeader()public void sendMessage(SIPMessage messageToSend) throws IOException
SIPTransactionsendMessage in interface SIPTransactionmessageToSend - Message to send to the SIP peer.IOExceptionSIPTransaction.sendMessage(gov.nist.javax.sip.message.SIPMessage)public void sendMessage(byte[] messageBytes,
InetAddress receiverAddress,
int receiverPort,
boolean retry)
throws IOException
messageBytes - Bytes of the message to send.receiverAddress - Address of the target peer.receiverPort - Network port of the target peer.IOException - If called.public void addEventListener(SIPTransactionEventListener newListener)
SIPTransactionaddEventListener in interface SIPTransactionnewListener - Listener to add.SIPTransaction.addEventListener(gov.nist.javax.sip.stack.SIPTransactionEventListener)public void removeEventListener(SIPTransactionEventListener oldListener)
SIPTransactionremoveEventListener in interface SIPTransactionoldListener - Listener to remove.SIPTransaction.removeEventListener(gov.nist.javax.sip.stack.SIPTransactionEventListener)public void raiseErrorEvent(int errorEventID)
SIPTransactionraiseErrorEvent in interface SIPTransactionerrorEventID - ID of the error to raise.SIPTransaction.raiseErrorEvent(int)public boolean isServerTransaction()
SIPTransactionisServerTransaction in interface SIPTransactionSIPTransaction.isServerTransaction()public abstract Dialog getDialog()
SIPTransactiongetDialog in interface SIPTransactiongetDialog in interface TransactionSIPTransaction.getDialog()public abstract void setDialog(SIPDialog sipDialog, String dialogId)
SIPTransactionsetDialog in interface SIPTransactionsipDialog - --
the dialog to set.dialogId - --
the dialog id ot associate with the dialog.sSIPTransaction.setDialog(gov.nist.javax.sip.stack.SIPDialog, java.lang.String)public int getRetransmitTimer()
SIPTransactiongetRetransmitTimer in interface SIPTransactiongetRetransmitTimer in interface TransactionSIPTransaction.getRetransmitTimer()public String getViaHost()
SIPTransactiongetViaHost in interface SIPTransactionSIPTransaction.getViaHost()public SIPResponse getLastResponse()
SIPTransactiongetLastResponse in interface SIPTransactionSIPTransaction.getLastResponse()public Response getResponse()
SIPTransactiongetResponse in interface SIPTransactionSIPTransaction.getResponse()public String getTransactionId()
SIPTransactiongetTransactionId in interface SIPTransactionSIPTransaction.getTransactionId()public int hashCode()
SIPTransactionhashCode in interface SIPTransactionhashCode in class ObjectSIPTransaction.hashCode()public int getViaPort()
SIPTransactiongetViaPort in interface SIPTransactionSIPTransaction.getViaPort()public boolean doesCancelMatchTransaction(SIPRequest requestToTest)
SIPTransactiondoesCancelMatchTransaction in interface SIPTransactionrequestToTest - is the request to test.SIPTransaction.doesCancelMatchTransaction(gov.nist.javax.sip.message.SIPRequest)public void setRetransmitTimer(int retransmitTimer)
SIPTransactionsetRetransmitTimer in interface SIPTransactionsetRetransmitTimer in interface TransactionretransmitTimer - -
the new integer value of the retransmit timer in milliseconds.SIPTransaction.setRetransmitTimer(int)public void close()
SIPTransactionclose in interface SIPTransactionSIPTransaction.close()public boolean isSecure()
isSecure in interface SIPTransactionSIPTransaction.isSecure()public MessageProcessor getMessageProcessor()
getMessageProcessor in interface SIPTransactionSIPTransaction.getMessageProcessor()public void setApplicationData(Object applicationData)
SIPTransactionsetApplicationData in interface SIPTransactionsetApplicationData in interface TransactionapplicationData - --
application data pointer to set. null clears the applicationd
data pointer.SIPTransaction.setApplicationData(java.lang.Object)public Object getApplicationData()
SIPTransactiongetApplicationData in interface SIPTransactiongetApplicationData in interface TransactionSIPTransaction.getApplicationData()public void setEncapsulatedChannel(MessageChannel messageChannel)
SIPTransactionsetEncapsulatedChannel in interface SIPTransactionSIPTransaction.setEncapsulatedChannel(gov.nist.javax.sip.stack.MessageChannel)public SipProviderImpl getSipProvider()
SIPTransactiongetSipProvider in interface SIPTransactiongetSipProvider in interface TransactionExtSIPTransaction.getSipProvider()public void raiseIOExceptionEvent()
raiseIOExceptionEvent in interface SIPTransactionSIPTransaction.raiseIOExceptionEvent()public boolean acquireSem()
SIPTransactionacquireSem in interface SIPTransactionSIPTransaction.acquireSem()public void releaseSem()
SIPTransactionreleaseSem in interface SIPTransactionSIPTransaction.releaseSem()public void semRelease()
semRelease in interface SIPTransactionpublic boolean passToListener()
SIPTransactionpassToListener in interface SIPTransactionSIPTransaction.passToListener()public void setPassToListener()
SIPTransactionsetPassToListener in interface SIPTransactionSIPTransaction.setPassToListener()public boolean testAndSetTransactionTerminatedEvent()
SIPTransactiontestAndSetTransactionTerminatedEvent in interface SIPTransactionSIPTransaction.testAndSetTransactionTerminatedEvent()public String getCipherSuite() throws UnsupportedOperationException
TransactionExtgetCipherSuite in interface SIPTransactiongetCipherSuite in interface TransactionExtUnsupportedOperationExceptionSIPTransaction.getCipherSuite()public Certificate[] getLocalCertificates() throws UnsupportedOperationException
TransactionExtgetLocalCertificates in interface SIPTransactiongetLocalCertificates in interface TransactionExtUnsupportedOperationExceptionSIPTransaction.getLocalCertificates()public Certificate[] getPeerCertificates() throws SSLPeerUnverifiedException
getPeerCertificates in interface SIPTransactiongetPeerCertificates in interface TransactionExtSSLPeerUnverifiedExceptionSIPTransaction.getPeerCertificates()public List<String> extractCertIdentities() throws SSLPeerUnverifiedException
SIPTransactionextractCertIdentities in interface SIPTransactionextractCertIdentities in interface TransactionExtSSLPeerUnverifiedExceptionSIPTransaction.extractCertIdentities()public abstract boolean isMessagePartOfTransaction(SIPMessage messageToTest)
SIPTransactionisMessagePartOfTransaction in interface SIPTransactionSIPTransaction.isMessagePartOfTransaction(gov.nist.javax.sip.message.SIPMessage)public ReleaseReferencesStrategy getReleaseReferencesStrategy()
TransactionExtgetReleaseReferencesStrategy in interface SIPTransactiongetReleaseReferencesStrategy in interface TransactionExtgov.nist.javax.sip.stack.SIPTransaction#isReleaseReferences()public void setReleaseReferencesStrategy(ReleaseReferencesStrategy releaseReferencesStrategy)
TransactionExtsetReleaseReferencesStrategy in interface SIPTransactionsetReleaseReferencesStrategy in interface TransactionExtgov.nist.javax.sip.stack.SIPTransaction#setReleaseReferences(ReleaseReferencesStrategy)public int getTimerD()
TransactionExtgetTimerD in interface SIPTransactiongetTimerD in interface TransactionExtSIPTransaction.getTimerD()public int getTimerT2()
TransactionExtgetTimerT2 in interface SIPTransactiongetTimerT2 in interface TransactionExtSIPTransaction.getTimerT2()public int getTimerT4()
TransactionExtgetTimerT4 in interface SIPTransactiongetTimerT4 in interface TransactionExtSIPTransaction.getTimerT4()public void setTimerD(int interval)
TransactionExtsetTimerD in interface SIPTransactionsetTimerD in interface TransactionExtinterval - value of Timer D (in ms)SIPTransaction.setTimerD(int)public void setTimerT2(int interval)
TransactionExtsetTimerT2 in interface SIPTransactionsetTimerT2 in interface TransactionExtinterval - value of Timer T2 (in ms)SIPTransaction.setTimerT2(int)public void setTimerT4(int interval)
TransactionExtsetTimerT4 in interface SIPTransactionsetTimerT4 in interface TransactionExtinterval - value of Timer T4 (in ms)SIPTransaction.setTimerT4(int)public int getBaseTimerInterval()
getBaseTimerInterval in interface SIPTransactionSIPTransaction.getBaseTimerInterval()public int getT4()
getT4 in interface SIPTransactionSIPTransaction.getT4()public int getT2()
getT2 in interface SIPTransactionSIPTransaction.getT2()public int getTimerI()
getTimerI in interface SIPTransactionSIPTransaction.getTimerI()public int getTimerK()
getTimerK in interface SIPTransactionSIPTransaction.getTimerK()public void setForkId(String forkId)
SIPTransactionsetForkId in interface SIPTransactionSIPTransaction.setForkId(java.lang.String)public String getForkId()
SIPTransactiongetForkId in interface SIPTransactionSIPTransaction.getForkId()public void scheduleMaxTxLifeTimeTimer()
scheduleMaxTxLifeTimeTimer in interface SIPTransactionSIPTransaction.scheduleMaxTxLifeTimeTimer()public void cancelMaxTxLifeTimeTimer()
cancelMaxTxLifeTimeTimer in interface SIPTransactionSIPTransaction.cancelMaxTxLifeTimeTimer()public String getMergeId()
getMergeId in interface SIPTransactionSIPTransaction.getMergeId()public long getAuditTag()
getAuditTag in interface SIPTransactionSIPTransaction.getAuditTag()public void setAuditTag(long auditTag)
setAuditTag in interface SIPTransactionSIPTransaction.setAuditTag(long)public boolean isTransactionMapped()
isTransactionMapped in interface SIPTransactionSIPServerTransaction.isTransactionMapped()public void setTransactionMapped(boolean transactionMapped)
setTransactionMapped in interface SIPTransactionSIPServerTransaction.setTransactionMapped(boolean)public void setCollectionTime(int collectionTime)
setCollectionTime in interface SIPTransactionSIPTransaction.setCollectionTime(int)Copyright © 2018. All Rights Reserved.