throbber
Components
`
`5
`Figure 6 is a block diagram illustrating components of a ozomputer that is
`connected to a broadcast channel. The above description generally assumeid that there was
`only one broadcast channel and that each computer had only one connection io that broadcast
`channel. More generally, a network of computers may have multiple broladcast channels,
`each computer may be connected to more than one broadcast channel, and each computer
`can have multiple connections to the same broadcast channel. The broadcas charmel is well
`
`5
`
`suited for computer processes (e.g., application programs) that execute coll boratively, such
`
`as network meeting programs. Each computer process can connect to one o more broadcast
`
`10
`
`charmels. The broadcast charmels can be identified by charmel
`
`type ( .g., application
`
`program name) and channel instance that represents separate broadcast charmels for that
`channel type. When a process attempts to connect to a broadcast channel, ii seeks a process
`currently connected to that broadcast charmel that is executing on a portal computer. The
`
`15
`
`20
`
`25
`
`30
`
`‘
`
`seeking process identifies the broadcast charmel by charmel type and charme instance.
`Computer 600 includes multiple application programs 6d] executing as
`separate processes. Each application program interfaces with a broadcasteril component 602
`for each broadcast channel to which it is connected. The broadcaster corhponent may be»
`implement as an object that is instantiated within the process space oil the application
`program. Alternatively, the broadcaster component may execute as a seplgarate process or
`thread from the application program.
`In one embodiment,
`the broadcaster component
`provides functions (e.g., methods of class) that can be invoked by the applifcation programs.
`The primary fimctions provided may include a connect fimction that an appilication program
`invokes passing an indication of the broadcast charmel to which the application program
`wants to connect.
`The application program may provide a callback ’routine that
`the
`broadcaster component invokes to notify the application program that the; connection has
`been completed,
`that is the process enters the fully connected state.
`lfhe broadcaster
`‘ component may also provide an" acquire message function that the application program can
`invoke to retrieve the next message that is broadcast on the broadcast channeil. Alternatively,
`the application program may provide a callback routine (which may be ax virtual function
`provided by the application program) that the broadcaster component invokes to notify the
`application program that a broadcast message has been received.
`Elach broadcaster
`
`component allocates a call-in port using the hashing algorithm. When calls are answered at
`
`[03004-8005/S1fi03733.I0l]
`
`-22-
`
`-,,3,,oo
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 549 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 549 of 1442
`
`

`
`the call-in port, they are transferred to other ports that serve as the exter:nal and internal
`
`ports.
`
`The computers connecting to the broadcast channel may include a central
`processing unit, memory, input devices (e.g., keyboard and pointing device), output devices
`(e.g., display devices), and storage devices (e.g., disk drives). The memiory and storage
`devices are computer-readable medium that may contain computer
`iiistructions that
`implement
`the broadcaster component.
`In addition,
`the data structureis and message
`structures may be stored or transmitted via a signal transmitted on a cqimputer-readable
`media, such as a communications link.
`I
`Figure 7 is a block diagram illustrating the sub-components of the broadcaster
`component in one embodiment. The broadcaster component includes a corinect component
`701, an external dispatcher 702, an internal dispatcher 703 for each internall connection, an
`acquire message component 704 and a broadcast component 712. The application program
`may provide a connect callback component 710 and a receive response coniponent 711 that
`are invoked by the broadcaster component. The application program invoikes the connect
`component to establish a connection to a designated broadcast channeli.
`The connect
`component identifies the external port and installs the external dispatchier for handling
`messages that are received on the external port. The connect component iilnvokes the seek
`
`is connected to the
`portal computer component 705 to identify a portal computer that
`broadcast channel and invokes the connect request component 706 to ask theiportal computer
`(if fully connected) to select neighbor processes for the newly connecting process. The
`external dispatcher receives external messages, identifies the type of message, and invokes
`
`the appropriate handling routine 707. The internal dispatcher receives the internal messages,
`
`5
`
`10
`
`15
`
`20
`
`identifies the type of message, and invokes the appropriate handling routine 708. The
`received broadcast messages are stored in the broadcast message queue 709. The acquire
`
`25
`
`The
`is invoked to retrieve messages from the broadcast queue.
`message component
`broadcast component is invoked by the application program to broadcast inessages in the
`broadcast channel.
`
`The following tables list messages sent by the broadcaster components.
`
`[D3004-8005/SUJOS 733. I01]
`
`-23 -
`
`7/31/00
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 550 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 550 of 1442
`
`

`
`EXTERNAL MESSAGES
`
`Message Type
`seeking_connection_call
`
`connection_request_ca11
`
`edge_proposa1_cal1
`
`port_connection_call
`
`connected_stmt
`
`condition__repair_stmt
`
`Description
`Indicates that a seeking process would like to knhw whether the
`receiving process is fully connected to the broaditast channel
`Indicates that the sending process would like thei receiving
`process to initiate a connection of the sending prfocess to the
`broadcast charmel
`.
`
`edge through
`Indicates that the sending process is proposing
`which the receiving process can connect to the broadcast
`charmel (i. e., edge pinning)
`
`Indicates that the sending process is proposing aiport through
`which the receiving process can connect to the broadcast
`channel
`
`Indicates that the sending process is connected to the broadcast
`charmel
`I
`
`Indicates that the receiving process should discoimect from one
`of its neighbors and connect to one of the processes involved in
`the neighbors with empty port condition
`'
`
`INTERNAL MESSAGES
`
`:
`
`~
`
`_
`
`<
`
`
`
`Description
`Indicates a message that is being broadcast lthrough the
`I broadcast charmel for the application programs
`
`
`
`
`
`Message Type
`broadcast_stmt
`
`connectionJJ0l't__SC8ICh_StlIlt
`
`connection_edge_search_call
`
`
`
`connection_edge_search_resp
`
`d1ameter__estimate_stmt
`
`diameter_reset_sunt
`
`disconnect__stmt
`
`
`
`
`
`
`Indicates that the designated process is looliing for a port
`
`through which it can connect to the broadc st channel
`
`Indicates that the requesting process is loo ' g for an edge
`through which it can connect to the broadc st channel
`
`Indicates whether the edge between this pr cess and the
`sending neighbor has been accepted by the - equesting
`party
`i
`
`Indicates an estimated diameter of the broa cast charmel
`
`
`
`Indicates to reset the estimated diameter to
`diameter
`
`5
`
`dicated
`
`Indicates that the sending neighbor is disconnecting from
`the broadcast channel
`-
`
`
`Indicates that neighbors with empty port co dition have
`
`
`
`
`
`
`[03004-8005/SID03733.l0l]
`
`-24-
`
`5
`
`7/31/00
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 551 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 551 of 1442
`
`

`
`
`been detected
`
`Indicates that the neighbors with empty por:ts have the
`condition_double_check_stmt
`same set of neighbors
`=
`Indicates that the broadcast channel is being shutdown
`
`
`
`
`
`
`shutdown_stmt
`
`
`
`5
`
`.
`Flow Diagrams
`Figures 8-34 are flow diagrams illustrating the processing of the broadcaster
`component in one embodiment. Figure 8 is a flow diagram illustrating the processing of the
`connect routine in one embodiment. This routine is passed a charmel type :(e.g., application
`name) and channel instance (e.g., session identifier), that identifies the brozidcast channel to
`which this process wants to connect. The routine is also passed auxiliarylinforrnation that
`includes the list of portal computers and a connection callback routine. Whein the connection
`is established, the connection callback routine is invoked to notify the application program.
`
`10 When this process invokes this routine, it is in the seeking connection statelt When a portal
`computer is located that is connected and this routine connects to at least ope neighbor, this
`process enters the partially connected state, and when the process eventually’ connects to four
`neighbors, it enters the fully connected state. When in the small regime, a; fully connected
`process may have less than four neighbors.
`In block 801, the routine openls the call-in port
`through which the process is to communicate with other processes when esta;blishing external
`and internal connections. The port is selected as the first available port uising the hashing‘
`algorithm described above.
`In block 802, the routine sets the connect tinie to the current
`time. The connect time is used to identify the instance of the process 11:18! is connected
`through this external port. One process may connect to a broadcast ch ' el of a certain
`
`15
`
`20
`
`25
`
`channel type and channel instance using one call-in port and then disconn cts, and another
`
`process may then connect to that same broadcast charmel using the same cal.-in port. Before
`the other process becomes fully connected, another process may try to cornllmunicate with it
`thinking it is the fully connected old process.
`In such a case, the connect tirrie can be used to
`identify this situation.
`In block 803, the routine invokes the seek portal domputer routine
`passing the channel type and channel instance. The seek portal computer I'O;lltinC attempts to
`locate a portal computer through which this process can connect to the broadcast channel for
`the passed type and instance.
`In decision block 804, if the seek portal corpputer routine is
`
`7/moo
`
`I i4a,
`
`(03004-8005/SLOO3733.lOl]
`
`-25-
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 552 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 552 of 1442
`
`

`
`successful in locating a fully connected process on that portal computer, lthen the routine
`continues at block 805, else the routine returns an unsuccessful indication.
`decision block
`805, if no portal computer other than the portal computer on which the proéhess is executing
`was located,
`then this is the first process to fully connect to broadcast !channel and the
`routine continues at block 806, else the routine continues at block 808.
`Ilh block 806, the
`routine invokes the achieve connection routine to change the state of
`process to fully
`connected.
`In block 807, the routine installs the external dispatcher for processing messages
`received through this process’ external port for the passed charmel type and charmel instance.
`When a message is received through that external port, the external dispatcher is invoked.
`The routine then returns.
`In block 808, the routine installs an external dispiatcher.
`In block
`809, the routine invokes the connect request routine to initiate the process of identifying
`neighbors for the seeking computer. The routine then returns.
`Figure 9 is a flow diagram illustrating the processing of ithe seek portal
`computer routine in one embodiment. This routine is passed the channel tiype and charmel
`instance of the broadcast channel to which this process wishes to connect. {This routine, for
`each search depth (e.g., port number), checks the portal computers at that stiarch depth. If a
`portal computer is located at that search depth with a process that is fully :'connected to the
`broadcast channel, then the routine returns an indication of success.
`In bloicks 902-911, the
`routine loops selecting each search depth until a process is located.
`In blocki 902, the routine
`selects the next search depth using a port number ordering algorithm.
`In decjiision block 903,
`if all the search depths have already been selected during this execution ofi the loop, that is
`for the currently selected depth, then the routine returns a failure indication; else the routine
`continues at block 904.
`In blocks 904-911, the routine loops selecting eachi portal computer
`and determining whether a process of that portal computer is connected to {or attempting to
`connect to) the broadcast charmel with the passed charmel type and chaniiel instance.
`In
`block 904, the routine selects the next portal computer.
`In decision block 905, if all the
`portal computers have already been selected, then the routine loops to block :902 to select the
`next search depth, else the routine continues at block 906.
`In block 906, thejroutine dials the
`selected portal computer through the port represented by the search depth.
`decision block
`
`907, if the dialing was successful, then the routine continues at block 908,; else the routine
`loops to block 904 to select the next portal computer. The dialing will be successful if the
`«dialed port is the call-in port of the broadcast channel of the passed channel tiype and channel
`
`[O3004-8005/Sb003733. I 0 l]
`
`-26-
`
`5
`
`7/3 "00
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 553 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 553 of 1442
`
`

`
`5
`
`10
`
`is
`
`20
`
`In block 908, the ioutine invokes a
`instance of a process executing on that portal computer.
`contact process routine, which contacts the answering process of the portal computer through
`
`the dialed port and determines whether that process is fully connected 0 the broadcast
`channel.
`In block 909, the routine hangs up on the selected portal computer.
`In decision
`block 910, if the answering process is frilly connected to the broadcast diharmel, then the
`routine returns a success indicator, else the routine continues at block 911.
`block 911, the
`routine invokes the check for external call routine to determine whether anlextemal call has
`been made to this process as a portal computer and processes that call.
`llhe routine then
`loops to block 904 to select the next portal computer.
`Figure 10 is a flow diagram illustrating the processing of the contact process
`routine in one embodiment. This routine determines whether the procesis of the selected
`portal computer that answered the call-in to the selected port
`is fully connected to the
`broadcast charmel.
`In block 1001,
`the routine sends an external message (i. e.,
`seeking__connection_call) to the answering process indicating that a seekingiprocess wants to
`know whether the answering process is fully connected to the broadcast channel.
`In block
`1002, the routine receives the external response message from the answering process.
`In
`decision block 1003,
`if the extemal
`response message is successfully received (i.e.,
`seeking_connection__resp), then the routine continues at block 1004, else
`routine returns.
`Wherever the broadcast component requests to receive an external message: it sets a time out
`period.
`If the external message is not received within that time out period, the broadcaster
`
`component checks its own call-in port to see if another process is calling it.
`
`In particular, the
`
`dialed process may be calling the dialing process, which may result in a deadlock situation.
`
`The broadcaster component may repeat the receive request several times.
`
`If the expected
`
`message is not received, then the broadcaster component handles the error as appropriate.
`
`In
`
`25
`
`decision block 1004, if the answering process indicates in its response message that it is fully
`
`connected to the broadcast channel, then the routine continues at block 1005, else the routine
`
`continues at block 1006.
`In block 1005, the routine adds the selected portal computer to a
`list of connected portal computers and then returns.
`In block 1006, thelroutine adds the
`I
`answering process to a list of fellow seeking processes and then returns.
`1
`Figure 11 is a flow diagram illustrating the processing of the connect request
`routine in one embodiment. This routine requests a process of a portal computer that was
`
`30
`
`identified as being fully connected to the broadcast channel to initiate the connection of this
`
`[03004-8005ISLDO3733.l0l]
`
`-27-
`
`7/moo
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 554 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 554 of 1442
`
`

`
`. i»
`
`In decision block 1101, if at least one process of a portal
`process to the broadcast charmel.
`computer was located that is fully connected to the broadcast channel,i
`continues at block 1103, else the routine continues at block 1102. A proiess of the portal
`computer may no longer be in the list if it recently disconnected from the bioadcast channel.
`In one embodiment, a seeking computer may always search its entire searcih depth and find
`multiple portal computers through which it can connect to the broadcast charmel.
`In block
`1102, the routine restarts the process of connecting to the broadcast channel and returns.
`In -
`
`then the routine
`
`5
`
`to
`
`block 1103, the routine dials the process of one of the found portal compiiters through the
`call-in port.
`In decision block 1104, if the dialing is successful, then the rovlitine continues at
`block 1105, else the routine continues at block 1113. The dialing may be unsuccessful if, for
`example, the dialed process recently disconnected from the broadcast cliarmel.
`In block
`1105, the routine sends an external message to the dialed process requesting a connection to
`the broadcast channel (i.e., connection_request_call).
`In block 1106, the roiitine receives the
`response message (i.e., connection_request_resp).
`In decision block 1107:, if the response
`15 message is successfully received, then the routine continues at block ll08lr else the routine
`continues at block 1113.
`In block 1108, the routine sets the expected number of holes (i.e.,
`empty internal connections) for this process based on the received responise. When in the
`large regime, the expected number of holes is zero. When in the small regiine, the expected
`number of holes varies from one to three.
`In block 1109, the routine sets the estimated
`diameter of the broadcast charmel based on the received response.
`In idecisi;bn block 1111, if
`the dialed process is ready to connect to this process as indicated by the résponse message,
`then the routine continues at block 1112, else the routine continues at block 1113.
`In block
`
`20
`
`25
`
`30
`
`1112,
`
`the routine invokes the add neighbor routine to add the answe ' g process as a
`
`neighbor to this process. This adding of the answering process typicallzjntccurs when the
`
`broadcast channel is in the small regime. When in the large regime, the r
`
`om walk search
`
`for a neighbor is performed.
`
`In block 1113, the routine hangs up the external connection
`
`with the answering process computer and then returns.
`5
`Figure 12 is a flow diagram of the processing of the check ifor external call
`routine in one embodiment. This routine is invoked to identify whether
`fellow seeking
`process is attempting to establish a connection to the broadcast channel thrqlugh this process.
`In block 1201, the routine attempts to answer a call on the call-in port.
`Iii decision block
`1202, if the answer is successful, then the routine continues at block l203,l else the routine
`[03004-8005/SL003733.10l 1
`-28-
`‘
`7,3,,o°
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 555 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 555 of 1442
`
`

`
`In
`In block 1203, the routine receives the external message from the iexternal port.
`returns.
`decision block 1204, if the type of the message indicates that a seeking iirocess is calling
`(i. e., seeking_connection_call), then the routine continues at block 1205,; else the routine
`returns.
`In block 1205, the routine sends an external message (i.e., seeking_Zconnection_resp)
`to the other seeking process indicating that this process is also is seeking
`connection.
`In
`decision block 1206, if the sending of the external message is successful,ithen the routine
`continues at block 1207, else the routine returns.
`In block 1207, the routirie adds the other
`seeking process to a list of fellow seeking processes and then returns. Thisllist may be used
`if this process can find no process that is fully connected to the broadcast clitannel.
`In which
`case,
`this process may check to see if any fellow seeking process wclire successful
`in
`connecting to the broadcast channel. For example, a fellow seeking process! may become the
`first process fully connected to the broadcast charmel.
`Figure 13 is a flow diagram of the processing of the achieve coimnection routine
`in one embodiment. This routine sets the state of this process to fully izonnected to the
`
`5
`
`10
`
`15
`
`broadcast channel and invokes a callback routine to notify the application program that the
`
`the
`In block 1301,
`process is now fully connected to the requested broadcast channel.
`the
`block 1302,
`routine sets the connection state of this process to fully connected.
`routine notifies fellow seeking processes that it is fully connected by sending a connected
`external message to them (i.e., connected_stmt).
`In block 1303, the rolitine invokes the
`connect callback routine to notify the application program and then returns.
`
`the external
`Figure 14 is a flow diagram illustrating the processing Lof
`dispatcher routine in one embodiment. This routine is invoked ‘when
`e external port
`receives a message. This routine retrieves the message, identifies the exterrial message type,
`and invokes the appropriate routine to handle that message. This routine iloops processing
`each message until all the received messages have been handled.
`In block :l140l, the routine
`answers (e.g., picks up) the external port and retrieves an external messége.
`In decision
`block 1402, if a message was retrieved, then the routine continues at blocik 1403, else the
`routine hangs up on the external port in block 1415 and returns.
`In decision block 1403, if
`the message type is for a process seeking a connection (i. e., seeking_connection_call), then
`the routine invokes the handle seeking connection call routine in block 1404, else the routine
`
`In decision block 1405, if the message type is for a connection
`continues at block 1405.
`request call (i.e., connection_request_cal1), then the routine invokes the handle connection
`
`(03004-8005/SL003733.l0l]
`
`-29-
`
`’
`
`,
`
`751,00
`
`20
`
`25
`
`30
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 556 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 556 of 1442
`
`

`
`request can routine in block 1406, else the routine continues at block 1407.
`
`In decision
`
`block 1407, if the message type is edge proposal call (i.e., edge_propos: _call), then the
`routine invokes the handle edge proposal call routine in block 1408, else the routine
`
`continues at block 1409.
`
`In decision block 1409, if the message type is i on connect call
`
`(1. e., port_connect_ca1l), then the routine invokes the handle port connection call routine in
` .1, if the message
`block 1410, else the routine continues at block 1411.
`In decision block 141
`type is a connected statement
`(i.e., connected_stmt),
`the routine invhkes the handle
`connected statement in block 1112, else the routine continues at block 1#12.
`In decision
`block 1412, if the message type is a condition repair statement (i. e., condition_repair_stmt),
`
`then the routine invokes the handle condition repair routine in block 1413 else the routine
`————v
`loops to block 1414 to process the next message. After each handling routine is invoked, the
`routine loops to block 1414.
`In block 1414, the routine hangs up on the tfzxtemal port and
`continues at block 1401 to receive the next message.
`Figure 15 is a flow diagram illustrating the processing of the handle seeking
`connection call routine in one embodiment. This routine is invoked when
`seeking process
`is calling to identify a portal computer through which it can connect to the bioadcast channel.
`
`In decision block 1501, if this process is currently fully connected to the liroadcast channel
`identified in the message, then the routine continues at block 1502, else the ioutine continues
`at block 1503. In block 1502, the routine sets a message to indicate that this process is frilly
`connected to the broadcast channel and continues at block 1505.
`In block ‘[1503, the routine
`sets a message to indicate that this process is not fully connected.
`In block il504, the routine
`adds the identification of the seeking process to a list of fellow seeking jirocesses.
`If this
`In
`process is not fully connected, then it is attempting to connect to the broa Ecast charmel.
`block 1505, the routine sends the external message response (i. e., seeking_i:.onnection_resp)
`to the seeking process and then returns.
`Figure 16 is a flow diagram illustrating processing of the himdle connection
`request call routine in one embodiment. This routine is invoked when thi: calling process
`wants this process to initiate the connection of the process to the broadcaist channel. This
`routine either allows the calling process to establish an internal connection
`this process
`(e.g., if in the small regime) or starts the process of identifying a process to iwhich the calling
`process can connect.
`In decision block 1601, if this process is currently figrlly connected to
`the broadcast charmel, then the routine continues at block 1603, else the routine hangs up on
`[o3oo4—soos/stoo3733.1ou‘
`-3 0-
`751,00
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 557 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 557 of 1442
`
`

`
`5
`
`10
`
`15
`
`the external port in block 1602 and returns.
`
`In block 1603, the routine sets the number of
`
`Injblock 1604, the
`holes that the calling process should expect in the response message.
`routine sets the estimated diameter in the response message.
`In block 1l605,
`the routine
`indicates whether this process is ready to connect to the calling process. This process is
`ready to connect when the number of its holes is greater than zero and the calling process is
`not a neighbor of this process.
`In block 1606, the routine sends to the calling process an
`external message
`that
`is
`responsive
`to
`the
`connection
`requlest
`call
`(i. e.,
`connection_request_resp).
`In block 1607, the routine notes the number of holes that the
`calling process needs to fill as indicated in the request message.
`In decision block 1608, if
`this process is ready to connect to the calling process, then the routine continues at block
`1609, else the routine continues at block 1611.
`In block 1609, the routinei invokes the add
`
`the routine
`In block 1610,
`neighbor routine to add the calling process as a neighbor.
`decrements the number of holes that the calling process needs to fill and ccimtinues at block
`1611.
`In block 1611, the routine hangs up on the external port.
`In decisitin block 1612, if
`this process has no holes or the estimated diameter is greater than one (i'.e., in the large
`regime), then the routine continues at block 1613, else the routine continueés at block 1616.
`In blocks 1613-1615, the routine loops forwarding a request for an edge through which to
`connect to the calling process to the broadcast charmel. One request is forwarded for each
`
`pair of holes of the calling process that needs to be filled.
`
`In decision b ock 1613, if the
`
`20
`
`number of holes of the calling process to be filled is greater than or equal to two, then the
`
`routine continues at block 1614, else the routine continues at block 1616.
`I block 1614, the
`routine invokes the forward connection edge search routine. The invoked ioutine is passed
`to an indication of the calling process and the random walk distance.
`In one iembodiment, the
`distance is twice in the estimated diameter of the broadcast channel.
`lngblock 1614, the
`routine decrements the holes left to fill by two and loops to block 1613.
`decision block
`1616, if there is still a hole to fill, then the routine continues at block 1617; else the routine
`returns.
`In block 1617, the routine invokes the fill hole routine passing thei identification of
`the calling process. The fill hole routine broadcasts a connection port search statement (i. e.,
`connection_port_search_stmt) for a hole of a connected process through which the calling
`process can connect to the broadcast charmel. The routine then retums.
`I
`Figure 17 is a flow diagram illustrating the processing of the add neighbor
`routine in one embodiment. This routine adds the process calling on the elxtemal port as a
`|03004-8005/SL003733. lol 1
`-31-
`1
`7/31/00
`
`25
`
`30
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 558 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 558 of 1442
`
`

`
`In block 1701, the routine identifies the calling process on the
`neighbor to this process.
`external port.
`In block 1702, the routine sets a flag to indicate that the neighbor has not yet
`received the broadcast messages from this process. This flag is used to ensure that there are
`no gaps in the messages initially sent to the new neighbor. The external riort becomes the
`internal port for this connection.
`In decision block 1703, if this process
`in the seeking
`connection state,
`then this process is connecting to its first neighbor and the routine
`continues at block 1704, else the routine continues at block 1705.
`In block I704, the routine
`
`In block I705, the routine
`sets the connection state of this process to partially connected.
`In block l_706, the routine
`adds the calling process to the list of neighbors of this process.
`installs an internal dispatcher for the new neighbor. The internal dispatcher is invoked when
`
`a message is received from that new neighbor through the internal port of that new neighbor.
`In decision block 1707, if this process buffered up messages while not full connected, then
`the routine continues at block 1708, else the routine continues at blocll 1709.‘
`In one
`
`embodiment, a process that is partially connected may buffer the messages that it receives
`
`through an internal connection so that it can send these messages as it connects to new
`neighbors.
`In block 1708, the routine sends the buffered messages to the new neighbor
`through the internal port.
`In decision block 1709, if the number of holesi of this process
`equals the expected number of holes, then this process is fully connectedi and the routine
`continues at block 1710, else the routine continues at block 1711.
`In block 1:710, the routine
`invokes the achieve connected routine to indicate that this process is fully connected.
`In
`decision block 1711,
`if the number of holes for this process is zero,
`then the routine
`continues at block 1712, else the routine retums.
`In block 1712, the roiitine deletes any
`pending edges and then returns. A pending edge is an edge that has been iproposed to this
`
`process for edge pirming, which in this case is no longer needed.
`
`'
`
`Figure 18 is
`a flow diagram illustrating the processing bf the forward
`connection edge search routine in one embodiment. This routine is responiiible for passing
`along a request to connect a requesting process to a randomly selected iieighbor of this
`process through the internal port ‘of the selected neighbor, that is part of the riandom walk.
`In
`decision block 1801, if the forwarding distance remaining is greater
`zero, then the
`routine continues at block 1804, else the routine continues at block 1802.
`decision block
`1802, if the number of neighbors of this process is greater than one,
`tihen the routine
`continues at block 1804, else this broadcast charmel is in the small regime] and the routine
`[o3oo4.soo5/sr.oo3733. 101]
`-32-
`7,3 mm
`
`5
`
`to
`
`15
`
`20
`
`25
`
`30
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 559 of 1442
`
`1
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 559 of 1442
`
`

`
`In decision block 1803, if the requesting process Dis a neighbor of
`continues at block 1803.
`this process, then the routine returns, else the routine continues at block 1804.
`In blocks
`1804-1807,
`the routine loops attempting to send a connection edge seaich call
`internal
`message (i.e., connection_edge_search_call) to a randomly selected neighborgi.
`In block 1804,
`the routine randomly selects a neighbor of this process.
`In

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket