
    
FZjv                     l    d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	  G d de
      Z G d	 d
e
      Zy)zv
mygeotab.ext.feed
~~~~~~~~~~~~~~~~~

A simple data feed wrapper, written as an extension to the MyGeotab API object.
    N)Thread)sleep)api)ConnectionErrorc                   p    e Zd ZdZej
                  Zej                  d        Zej                  d        Z	y)DataFeedListenerz)The abstract DataFeedListener to overridec                      y)z]Called when rows of data are received.

        :param data: A list of data objects.
        N )selfdatas     SC:\Users\Rodrigo\frota-trucks-cliente\python\Lib\site-packages\mygeotab/ext/feed.pyon_datazDataFeedListener.on_data   s     	    c                      y)zCalled when server errors are encountered. Return False to close the stream.

        :rtype: bool
        :param error: The error object.
        :return: If True, keep listening. If False, stop the data feed.
        Fr
   )r   errors     r   on_errorzDataFeedListener.on_error   s     r   N)
__name__
__module____qualname____doc__abcABCMeta__metaclass__abstractmethodr   r   r
   r   r   r   r      s@    3KKM  	 r   r   c                   &    e Zd ZdZddZd ZddZy)DataFeedzwA simple wrapper for the MyGeotab Data Feed. Create a listener that inherits
    from DataFeedListener to pass in.
    Nc                     || _         || _        || _        || _        || _        || _        d| _        d| _        d| _        y)a}  Initializes the DataFeed object.

        :param client_api: The MyGeotab API object.
        :param listener: The custom DataFeedListener object.
        :param type_name: The type of entity.
        :param interval: The data retrieval interval (in seconds).
        :param search: The search object.
        :param results_limit: The maximum number of records to return.
        FN)	
client_apilistener	type_nameintervalsearchresults_limitrunning_version_thread)r   r   r   r    r!   r"   r#   s          r   __init__zDataFeed.__init__/   sD     % " *r   c                    | j                   r	 | j                  j                  d| j                  | j                  | j
                  | j                        }|d   | _        | j                  j                  |d          | j                   s		 d| _         yt        | j                         | j                   rd| _         y# t        j                  t        f$ r3}| j                  j                  |      du rY d}~d| _         yY d}~d}~ww xY w)zRunner for the Data Feed.GetFeed)r    r"   from_versionr#   	toVersionr   FN)r$   r   callr    r"   r%   r#   r   r   r   MyGeotabExceptionr   r   r   r!   )r   result	exceptions      r   _runzDataFeed._runC   s    ll--"nn;;!%"&"4"4 .  !'{ 3%%fVn5 << $-- ! ll"  ))?; ==)))4=  >s   A0B= =D	DD	c                     d| _         |r6t        | j                        | _        | j                  j	                          y| j                          y)zZStart the data feed.

        :param threaded: If True, run in a separate thread.
        T)targetN)r$   r   r0   r&   start)r   threadeds     r   r3   zDataFeed.startX   s7    
 !3DLLL IIKr   )NN)T)r   r   r   r   r'   r0   r3   r
   r   r   r   r   *   s    (*
r   r   )r   r   	threadingr   timer   mygeotabr   requests.exceptionsr   objectr   r   r
   r   r   <module>r:      s3        /v 08v 8r   