You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							52 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							52 lines
						
					
					
						
							1.0 KiB
						
					
					
				#pragma once
 | 
						|
#include "Action.h"
 | 
						|
#include "MessageTx.h"
 | 
						|
 | 
						|
class MessageTxTimeout;
 | 
						|
 | 
						|
/* A special type of MessageTx for multipart messages that supports being canceled with a timeout.*/
 | 
						|
class MessageTxTimeoutable : public MessageTx
 | 
						|
{
 | 
						|
public:
 | 
						|
	MessageTxTimeoutable(
 | 
						|
		std::weak_ptr<J2534Connection> connection,
 | 
						|
		PASSTHRU_MSG& to_send
 | 
						|
	);
 | 
						|
 | 
						|
	unsigned long getRecvCount() {
 | 
						|
		return recvCount;
 | 
						|
	}
 | 
						|
 | 
						|
	virtual void onTimeout() = 0;
 | 
						|
 | 
						|
protected:
 | 
						|
	unsigned long recvCount;
 | 
						|
 | 
						|
	void scheduleTimeout(std::chrono::microseconds timeoutus);
 | 
						|
 | 
						|
	void scheduleTimeout(unsigned long timeoutus);
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/* An Action that cancels MessageTxTimeoutableif the Timeout Actoin executes
 | 
						|
before the MessageTxTimeoutableif renews its timeout.
 | 
						|
*/
 | 
						|
class MessageTxTimeout : public Action
 | 
						|
{
 | 
						|
public:
 | 
						|
	MessageTxTimeout(
 | 
						|
		std::shared_ptr<MessageTxTimeoutable> msg,
 | 
						|
		std::chrono::microseconds timeout
 | 
						|
	);
 | 
						|
 | 
						|
	MessageTxTimeout(
 | 
						|
		std::shared_ptr<MessageTxTimeoutable> msg,
 | 
						|
		unsigned long timeout
 | 
						|
	);
 | 
						|
 | 
						|
	virtual void execute();
 | 
						|
 | 
						|
private:
 | 
						|
	std::weak_ptr<MessageTxTimeoutable> msg;
 | 
						|
	unsigned long lastRecvCount;
 | 
						|
};
 | 
						|
 |