Class: Quark::MdkProtocol::SendWithAcks

Inherits:
DatawireQuarkCore::QuarkObject show all
Extended by:
DatawireQuarkCore::Static
Defined in:
lib/mdk_protocol.rb

Constant Summary

Constants included from DatawireQuarkCore::Static

DatawireQuarkCore::Static::Unassigned

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from DatawireQuarkCore::Static

_lazy_statics, static, unlazy_statics

Methods inherited from DatawireQuarkCore::QuarkObject

#to_s

Constructor Details

#initializeSendWithAcks

Returns a new instance of SendWithAcks.



1950
1951
1952
1953
1954
# File 'lib/mdk_protocol.rb', line 1950

def initialize()
    self.__init_fields__

    nil
end

Instance Attribute Details

#_addedObject

Returns the value of attribute _added.



1942
1943
1944
# File 'lib/mdk_protocol.rb', line 1942

def _added
  @_added
end

#_bufferedObject

Returns the value of attribute _buffered.



1942
1943
1944
# File 'lib/mdk_protocol.rb', line 1942

def _buffered
  @_buffered
end

#_inFlightObject

Returns the value of attribute _inFlight.



1942
1943
1944
# File 'lib/mdk_protocol.rb', line 1942

def _inFlight
  @_inFlight
end

#_myLogObject

Returns the value of attribute _myLog.



1942
1943
1944
# File 'lib/mdk_protocol.rb', line 1942

def _myLog
  @_myLog
end

#_recordedObject

Returns the value of attribute _recorded.



1942
1943
1944
# File 'lib/mdk_protocol.rb', line 1942

def _recorded
  @_recorded
end

#_sentObject

Returns the value of attribute _sent.



1942
1943
1944
# File 'lib/mdk_protocol.rb', line 1942

def _sent
  @_sent
end

Instance Method Details

#__init_fields__Object



2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
# File 'lib/mdk_protocol.rb', line 2078

def __init_fields__()
    
    self._buffered = {}
    self._inFlight = {}
    self._added = 0
    self._sent = 0
    self._recorded = 0
    self._myLog = ::Quark.quark._getLogger("SendWithAcks")

    nil
end

#_debug(message) ⇒ Object



1959
1960
1961
1962
1963
1964
1965
# File 'lib/mdk_protocol.rb', line 1959

def _debug(message)
    
    s = (((("[") + (((::DatawireQuarkCore::List.new((@_buffered).keys)).size).to_s)) + (" buf, ")) + (((::DatawireQuarkCore::List.new((@_inFlight).keys)).size).to_s)) + (" inf] ")
    @_myLog.debug((s) + (message))

    nil
end

#_getClassObject



2022
2023
2024
2025
2026
2027
# File 'lib/mdk_protocol.rb', line 2022

def _getClass()
    
    return "mdk_protocol.SendWithAcks"

    nil
end

#_getField(name) ⇒ Object



2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
# File 'lib/mdk_protocol.rb', line 2029

def _getField(name)
    
    if ((name) == ("_buffered"))
        return (self)._buffered
    end
    if ((name) == ("_inFlight"))
        return (self)._inFlight
    end
    if ((name) == ("_added"))
        return (self)._added
    end
    if ((name) == ("_sent"))
        return (self)._sent
    end
    if ((name) == ("_recorded"))
        return (self)._recorded
    end
    if ((name) == ("_myLog"))
        return (self)._myLog
    end
    return nil

    nil
end

#_setField(name, value) ⇒ Object



2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
# File 'lib/mdk_protocol.rb', line 2054

def _setField(name, value)
    
    if ((name) == ("_buffered"))
        (self)._buffered = ::DatawireQuarkCore.cast(value) { ::Hash }
    end
    if ((name) == ("_inFlight"))
        (self)._inFlight = ::DatawireQuarkCore.cast(value) { ::Hash }
    end
    if ((name) == ("_added"))
        (self)._added = ::DatawireQuarkCore.cast(value) { ::Integer }
    end
    if ((name) == ("_sent"))
        (self)._sent = ::DatawireQuarkCore.cast(value) { ::Integer }
    end
    if ((name) == ("_recorded"))
        (self)._recorded = ::DatawireQuarkCore.cast(value) { ::Integer }
    end
    if ((name) == ("_myLog"))
        (self)._myLog = value
    end

    nil
end

#onAck(sequence) ⇒ Object

Called when receiving acknowledgement from other side.



2000
2001
2002
2003
2004
2005
2006
2007
# File 'lib/mdk_protocol.rb', line 2000

def onAck(sequence)
    
    (@_inFlight).delete(sequence)
    @_recorded = (@_recorded) + ((1))
    self._debug(((("ack #") + ((sequence).to_s)) + (", discarding #")) + ((sequence).to_s))

    nil
end

#onConnected(sender) ⇒ Object

Call when (re)connected to other side.



1970
1971
1972
1973
1974
1975
1976
1977
# File 'lib/mdk_protocol.rb', line 1970

def onConnected(sender)
    
    (@_buffered).merge!(@_inFlight)
    @_inFlight = {}
    self.onPump(sender)

    nil
end

#onPump(sender) ⇒ Object

Call to send buffered messages.



1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
# File 'lib/mdk_protocol.rb', line 1982

def onPump(sender)
    
    seqs = ::DatawireQuarkCore::List.new((@_buffered).keys)
    (seqs).sort!
    idx = 0
    while (((seqs).size) > (idx)) do
        evt = (@_buffered).delete((seqs)[idx])
        (@_inFlight)[(evt).sequence] = (evt)
        sender.send(evt)
        idx = (idx) + (1)
    end

    nil
end

#send(json_type, event) ⇒ Object

Send an event.



2012
2013
2014
2015
2016
2017
2018
2019
2020
# File 'lib/mdk_protocol.rb', line 2012

def send(json_type, event)
    
    wrapper = ::Quark.mdk_protocol.AckableEvent.new(json_type, event, @_added)
    @_added = (@_added) + ((1))
    (@_buffered)[(wrapper).sequence] = (wrapper)
    self._debug(("logged #") + (((wrapper).sequence).to_s))

    nil
end