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.



1958
1959
1960
1961
1962
# File 'lib/mdk_protocol.rb', line 1958

def initialize()
    self.__init_fields__

    nil
end

Instance Attribute Details

#_addedObject

Returns the value of attribute _added.



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

def _added
  @_added
end

#_bufferedObject

Returns the value of attribute _buffered.



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

def _buffered
  @_buffered
end

#_inFlightObject

Returns the value of attribute _inFlight.



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

def _inFlight
  @_inFlight
end

#_myLogObject

Returns the value of attribute _myLog.



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

def _myLog
  @_myLog
end

#_recordedObject

Returns the value of attribute _recorded.



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

def _recorded
  @_recorded
end

#_sentObject

Returns the value of attribute _sent.



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

def _sent
  @_sent
end

Instance Method Details

#__init_fields__Object



2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
# File 'lib/mdk_protocol.rb', line 2086

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



1967
1968
1969
1970
1971
1972
1973
# File 'lib/mdk_protocol.rb', line 1967

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



2030
2031
2032
2033
2034
2035
# File 'lib/mdk_protocol.rb', line 2030

def _getClass()
    
    return "mdk_protocol.SendWithAcks"

    nil
end

#_getField(name) ⇒ Object



2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
# File 'lib/mdk_protocol.rb', line 2037

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



2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
# File 'lib/mdk_protocol.rb', line 2062

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.



2008
2009
2010
2011
2012
2013
2014
2015
# File 'lib/mdk_protocol.rb', line 2008

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.



1978
1979
1980
1981
1982
1983
1984
1985
# File 'lib/mdk_protocol.rb', line 1978

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

    nil
end

#onPump(sender) ⇒ Object

Call to send buffered messages.



1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
# File 'lib/mdk_protocol.rb', line 1990

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.



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

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