throbber
Elisa Bertino (Ed.)
`
`ECOOP2000 —
`Object-Oriented
`Programming
`
`14th European Conference
`Sophia Antipolis and Cannes, France, June 12-16, 2000
`Proceedings
`
`
`
`);) Springer
`
`Zynga Ex. 1022, p. 1
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 1
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Series Editors
`
`Gerhard Goos, Karlsruhe University, Germany
`Juris Hartmanis, Cornell University, NY, USA
`Jan van Leeuwen, Utrecht University, The Netherlands
`
`Volume Editor
`
`Elisa Bertino
`Universita’ di Milano
`Dipartimento di Scienze dell’ Informazione
`Via Comelico 39/49, 20135 Milano,Italy
`E-mail: bertino @dsi.unimi.it
`
`Cataloging-in-Publication Data applied for
`
`Die Deutsche Bibliothek - CIP-Einheitsaufnahme
`
`Object oriented programming : 14th European conference ; proceedings/
`ECOOP2000, Sophia Antipolis and Cannes,France, June 12 - 16, 2000.
`Elisa Bertino (ed.). - Berlin ; Heidelberg ; New York ; Barcelona;
`Hong Kong; London; Milan ; Paris ; Singapore ; Tokyo : Springer, 2000
`(Lecture notes in computerscience ; Vol. 1850)
`ISBN 3-540-67660-0
`
`.. WenctLibrary
`Uns
`in_-M i
`ity ¢
`nive
`
`niversity oj
`onsin-Madison
`venue
`
`Wi 53706-1688
`
`Tata.
`
`CR Subject Classification (1991): D.1-3, H.2, F.3, C.2, K.4, J.1
`
`ISSN 0302-9743
`ISBN 3-540-67660-0 Springer-Verlag Berlin Heidelberg New York
`
`This work is subject to copyright. All rights are reserved, whether the whole or part of the material is
`concerned,specifically the rights of translation, reprinting, re-useofillustrations, recitation, broadcasting,
`reproduction on microfilms or in any other way, and storage in data banks. Duplication of this publication
`orparts thereof is permitted only underthe provisions of the German Copyright Law of September9, 1965,
`in its current version, and permission for use must alwaysbe obtained from Springer-Verlag. Violations are
`liable for prosecution under the German Copyright Law.
`
`Springer-Verlag is a companyin the BertelsmannSpringerpublishing group.
`© Springer-Verlag Berlin Heidelberg 2000
`Printed in Germany
`
`Typesetting: Camera-ready by author, data conversion by PTP-Berlin, Stefan Sossna
`Printed on acid-free paper
`SPIN 10722117
`06/3142
`543210
`
`Zynga Ex. 1022, p. 2
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 2
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Zynga Ex. 1022, p. 3
`Zynga v. IGT
`IPR2022-00368
`
`
`
`This material may be protected by Copyright law (Title 17 U.S. Code)
`
`

`

`Distributed Asynchronous Collections
`
`253
`
`the demand for more flexible communication models,reflecting the dynamic na-
`ture of the applications. The publish/subscribe interaction style has proven its
`ability to fill this gap [22]. Indeed the decoupling of parties in time as well as
`space is a key to scalability.
`
`topic-based or subject-based pu-
`Publish/Subscribe Interaction. The classical
`blish/subscribe involves a static classification of the messages by introducing
`group-like notions [26], and is incorporated by most industrial strength soluti-
`ons, e.g., [7,32]. Publish/subscribe is frequently based on a push model, where
`producers feed a software bus with information and the information is pushed
`towards consumers from there. Other approaches to “messaging” furthermore
`integrate pull-style mechanisms [24], i.e., consumers actively poll for new infor-
`mation. The term queueing is frequently applied when referring to such pull-style
`interaction. Queueing usually expresses one-for-all semantics, which meansthat
`one single consumer will consume an information. In contrast, with push-style
`interaction, an information is generally pushed to all consumers (one-for-each).
`Asnoticedin [28], some applications need only one interaction style while others
`require both. Instead of bringing all these variants to a common denominator,
`much emphasis is usually put on their differences.
`
`Object-Oriented Publish/Subscribe: Does it Make Sense? It is often claimed that
`“objects” cannot really support the requirements of a publish/subscribe midd-
`leware [18]. That argumentation is also commonly used by the promotersof so-
`called “messaging systems”, which claim that objects do communicate through
`synchronous method invocations which force the interacting parties to be both
`coupled in time and in space.
`.
`This paper makes a case against this argument by making an attempt to
`unify the diverging flavors of publish/subscribe. The argument against a fu-
`sion of object-orientation and the publish/subscribe communication style indeed
`might apply to the current commercial practices in distributed object-oriented
`computing, which are mainly based on derivatives of the remote procedure call
`(DCOM [25], Java RMI [31], CORBA [23]).? As we will convey in this paper,
`decoupling publishers and subscribers can be made very practical in an object-
`oriented setting, and the integration of object-oriented principles and messaging
`can go further than simply wrapping a messaging system with an object-oriented
`API.
`
`Publish/Subscribe Abstractions. To capture the various interaction styles of
`publish/subscribe, we propose an abstraction called Distributed Asynchronous
`Collection (DAC). A DACdiffers from a conventionalcollection by its distribu-
`ted nature and the way objects interact with it: besides representing a collection
`
`1 Time decoupling: the interacting parties do not need to be up at the same time.
`Space decoupling: the interacting parties do not need to know each other.
`2 Mucheffort is currently made to integrate messaging into existing middlewaresolu-
`tions, as shown by [12,24].
`
`Zynga Ex. 1022, p. 4
`Zyngav. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 4
`Zynga v. IGT
`IPR2022-00368
`
`

`

`254
`
`P.T. Eugster, R. Guerraoui, and J. Sventek
`
`of objects (set, bag, queue, etc.), a DAC can be viewed as a publish/subscribe
`engine of its own. In fact, when querying a DAC for objects, the client expresses
`its interest in such objects. In other words, the invocation of an operation on a
`DACexpresses the notion of future notifications and can be viewed as a sub-
`scription. According to the terminology adopted in the observer design pattern
`[9], the DACis the subject anditsclient is the observer. This abstraction allows
`to unify different publish/subscribe styles in a single framework, which can be
`seen as an extension of a conventional collection framework. Wewill showin this
`paper how this approach allowed us to mix push and pull models, one-for-all
`and one-for-each semantics, along with different QoS.
`In short, within all publish/subscribe interaction styles noneis clearly better
`than the others for all application purposes. In this paper we present simple
`abstractions for publish/subscribe interaction, called Distributed Asynchronous
`Collections. On the one hand, DACsallow to capture the different styles without
`blurring their respective advantages. On the other hand, DACs unite these styles
`inside a single framework.
`
`Roadmap. The remainderof this paper is organized as follows. Section 2 recalls
`the various interaction styles in distributed computing and motivates the need
`for a subscription-like way of communicating. Section 3 gives an overview of the
`DACabstraction. Section 4 gives the basic DAC API, whereas Section 5 presents
`some preliminary class implementations. In Section 6 we show a simple example
`of programming with DACs. Section 7 discusses some performanceissues of our
`implementation, and Section 8 contrasts our efforts with related work. Finally
`Section 9 summarizes our work and concludes the paper.
`
`2 Publish/Subscribe: Commonalities and Variations
`
`Before describing our DAC abstraction, we first overview the basics of pu-
`blish/subscribe interaction styles. In a first step, the publish/subscribe com-
`munication style is compared with more traditional interaction schemes. In a
`second phase,the different existing approaches to publish/subscribe are elucida-
`ted more precisely. We point out the fact that each of the different interaction
`styles has proven certain advantages over others, which motivates the usefulness
`of unifying them inside a framework.
`
`2.1 Publish/Subscribe in Perspective
`
`The publish/subscribe paradigm is a loose communication scheme for modeling
`the interaction between applications in distributed systems. Unlike the classic
`request/reply model or shared memory communication, publish/subscribe pro-
`vides time decoupling (i.e., the interacting parties do not need to be up at the
`same time) of message producers and consumers. Figure 1 shows a comparison
`of the most common communication schemes: message passing (asynchronous
`Zynga Ex. 1022, p. 5
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 5
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Distributed Asynchronous Collections
`
`255
`
`send) may also offer an asynchronous interaction scheme, but lacks space de-
`coupling(i.e., the interacting parties need to know each other), just like the re-
`quest/reply communication style. Indeed with message passing, the information
`producer must have a meansoflocating the information consumer to which the
`information will be sent, whereas with the request/reply interaction model the
`message consumerrequiresa reference to the information producerin orderto is-
`sue a request to it. Publish/subscribe combines time as well as space decoupling,
`since the information providers and consumers remain anonymousto each other.
`This outlines the general applicability of this communication model and makes
`it appealing.? Like communication based on shared memory, publish/subscribe
`moreover allows to address several destinations (arity of n). Basically the pu-
`blish/subscribe terminology defines tworoles:
`
`— Subscriber: A party which is interested in certain information (events, mes-
`sages) subscribes to that information,signalling that it wishes to receive all
`pieces of information (event notifications, messages) manifesting the speci-
`fied characteristics. Leasing is a special form of subscribing, in which the
`duration of the subscription is limited by a time-out.
`— Publisher: A party that produces information (events, messages) becomes a
`publisher.
`
`In most applications however, participating entities incorporate both publis-
`hers and subscribers, which allows a very flexible interaction. This is one of
`the main differences to pure push-based systems [13], where participants are eit-
`her producers or consumers and producers are supposed to beseveral orders of
`magnitude higher in number than consumers.
`
`Time
`
`Space
`
`
`
`
`
`
`
`
`Request/Reply
`
`Asnynchronous Send
`
`
`Shared Memory
`
`
`Publish/Subscribe
`
`
`Arity
`
`
`
`
`
`
`Fig. 1. Different Communication Models
`
`2.2 Topics
`
`The classic publish/subscribe interaction model is based on the notion of topics
`or subjects, which basically resemble groups [26]. Subscribing to a topic T can
`be viewed as becoming memberof a group T. The topic abstraction however
`
`3 It is possible to build closer coupled communication models on top of loose ones and
`vice versa, as proposed by [34] for instance. The resulting performance in the second
`case howeveris generally poor.
`
`Zynga Ex. 1022, p. 6
`Zyngav. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 6
`Zynga v. IGT
`IPR2022-00368
`
`

`

`256
`
`P.T. Eugster, R. Guerraoui, and J. Sventek
`
`differs from the group abstraction by its more dynamic nature. While groups
`are usually disjoint sets of members (e.g., group communication for replication
`[3]), topics typically overlap, i.e., a participant subscribes to more than just one
`topic. In orderto classify the topics more easily, it is of great use to furthermore
`introduce a hierarchy of topics [32]. In this model, a topic can be a derived or
`more specialized topic of another one,and is therefore called subtopic. The use
`of wildcards offers a more convenient way of expressing cross-topic requests.
`Figure 2 shows an example of topic-based subscribing. Subscriber Shas an-
`nouncedits interest in both topics x andy. It is notified of events corresponding
`to both topics (messages m, and m,). Subscriber S2 has only subscribed to topic
`x, and therefore only receives messages related to that topic (message m;).
`
`
`
`
`
`
`y Publish
`v Subscribe
`4 Deliver
`P Publisher
`
`S$; Subscriber
`
`Fig. 2. Topic-Based Subscribing
`
`2.3. Push and Pull Mixing
`
`In the publish/subscribe model, the action of subscribing describes a sort of
`registration procedure for an interested party. However, interests in events can
`also be expressed through a moredirect interaction. In general, we distinguish
`the following ways for an interested party to interact:
`
`— In a passive way,it can subscribe to a choice of notifications. By callbacksit
`will be notified of the occurrence of events. This kind of interaction consti-
`tutes the push model, since the information is pushed from the information
`bus to the subscriber. This is the classic publish/subscribe approach, since
`it enforces applications which are only loosely coupled in time.
`— Moreactively, a consumercan poll for new notifications. This task may waste
`resources and is not well adapted to asynchronous systems. In fact, polling
`based solutions tend to be very expensive and scale poorly: polling too often
`can beinefficient and polling too slowly may result in delayed responses to
`critical situations [29]. This style is often called queueing, and in the context
`of this paper this is the type of interaction we will refer to as pull model.
`
`Zynga Ex. 1022, p. 7
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 7
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Distributed Asynchronous Collections
`
`257
`
`— Another yet more synchronouspull-type interaction is given by blocking pull-
`style interaction. In this scenario, a consumer which tries to pull information
`is blocked until a new notification is available. Just like the request/reply
`model however, this variant introduces time coupling,andis therefore rarely
`used in common messaging systems.
`
`Although in general push-style interaction seems more appropriate, certain
`applications may not be interested in receiving information as soon as possible,
`but only at precise moments. In those situations, the pull model might be of
`interest.
`
`2.4 Delivery Semantics and Reliability Issues
`
`In distributed systems, and in particular when considering communication mo-
`dels and protocols, precise specification of the semantics ofa delivery is a crucial
`issue. Delivery guaranteesare often limited by the behavior of deeper communi-
`cation layers, down to the properties of the network itself, limiting the choice of
`feasible semantics. On the other hand, different applications also may demand
`for different semantics. While sometimes a high throughput is preeminent and
`a low reliability degree is tolerable, some applications prioritize reliability to
`throughput. For this reason most common messaging systems provide different
`qualities of service, in order to meet the demandsofa variety of application pur-
`poses [1,32].4 The delivery semantics for notifications offered by existing systems
`can be roughly divided into two groups.
`
`— Unreliable delivery. Protocols for unreliable delivery give few guarantees.
`These semantics are often used for applications where the throughputis of
`primary importance, but the loss of certain messages is not fatal for the
`application.
`— Reliable delivery. Reliable delivery means that a message will be delivered to
`every subscriber despite certain failures. Usually the failure or the absence
`of the subscriber itself is not considered,i.e., if the subscriber has failed,
`the message might not be delivered to it and thereliability property is not
`considered violated. When using persistent storage to buffer such messages
`until the subscriber is back on line, a stronger guarantee is given. This is
`often referred to as certified delivery [32].
`
`3 Distributed Asynchronous Collections: Overview
`
`This section gives an overview of our approach to publish/subscribe, by first
`introducing Distributed Asynchronous Collections as key abstractions. We show
`the relationship between those abstractions and the publish/subscribe communi-
`cation model. In a second step, we picture more in detail how these abstractions
`allow to build several different publish/subscribe variants inside a unified frame-
`work. This section however should be understood as a general introduction to
`
`4 [32] adopts the notion ofdelivery service.
`
`Zynga Ex. 1022, p. 8
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 8
`Zynga v. IGT
`IPR2022-00368
`
`

`

`258
`
`P.T. Eugster, R. Guerraoui, and J. Sventek
`
`our abstractions for publish/subscribe. The following sections will give a more
`concrete view of DACs.
`
`3.1 DACs as Object Containers
`
`Just like any collection, a DAC is an abstraction of a container object that re-
`presents a group of objects. It can be seen as a meansto store, retrieve and
`manipulate objects that form a natural group, like a mail folder or a file direc-
`tory. Unlike a conventional collection, a DAC is a distributed collection whose
`operations might be invoked from various nodesof a network. DACsdiffer funda-
`mentally from the distributed collections described in [21] for instance, by being
`asynchronousandessentially distributed, i.e., DACs can be seen as omnipresent
`entities.> Participating processes act with a DAC througha local proxy, which
`is viewed as a local collection and hides the distribution of the DAC. DACsare
`not centralized on a single host, in order to guarantee their availability despite
`certain failures.
`A collection framework is a unified architecture for representing and acces-
`sing collections, allowing them to be manipulated independently of their repre-
`sentation. For example, both Smalltalk [14] and Java [16] contain rich collection
`frameworks that reduce the programmingeffort by providing useful data structu-
`res and algorithms together with high-performance implementations. Collection
`frameworkscan for instance also be found for C++ (e.g., Silicon Graphics’ STL
`[30]) as additional libraries. Figure 3 shows the inheritance graph of the Java
`collection framework.
`
`3.2 The Asynchronous Flavor of DACs
`
`Ournotion of Distributed Asynchronous Collection represents more than just a
`distributed collection. In fact, a synchronous invocation of a distant object can
`involve a considerable latency, hardly comparable with that of a local one. In
`contrast, asynchronousinteraction is enforced with ourcollections. By calling
`an operation of a DAC, one expresses an interest in future notifications. When
`querying a DACfor objects of a certain kind for instance, the party interacting
`with the DAC expresses its interest in such objects. Therefore, when such an ob-
`ject is eventually “pushed” into the DAC, the interested party is asynchronously
`notified.
`Thereis a strong resemblance with the notion of future [4] (future type mes-
`sage passing [35]), that describes a communication model in which a client que-
`ries an asynchronous object for information by issuing a request to it. Instead
`of blocking however, the client can pursue its processing. As soon as the reply
`has been computed, the object acting as server notifies the client. Latter one
`may query the result (lazy synchronization or wait-by-necessity [5]), or ignore
`it. Figure 4 compares the two paradigms. When programming with DACs, the
`° The distributed collections presented in [21] are centralized collections that can be
`remotely accessed through RMI.
`
`Zynga Ex. 1022, p. 9
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 9
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Distributed Asynchronous Collections
`
`259
`
`Collection
`
`aa
`
`
`
`ch implements A extends
`
`Abstract Cl.
`
`Fig. 3. Collections in Java (Excerpt)
`
`subscriber can be viewed as the client. The DAC incarnates a server role in
`this scenario, since the publishers, which are theeffective information suppliers,
`remain anonymous.
`Bycalling an operation on the DAC, thecaller requests certain information.
`The main difference with futures lies in the numberof times that information is
`supplied to the client. Within the notion of future, only a single reply is passed to
`the client,® whereas with DACs, every time an information which is interesting
`for the registered party is created, it will be sent to it.
`
`3.3. Publish/Subscribe with DACs
`
`Expressing onesinterest in receiving information of a certain kind can be viewed
`as subscribing to information of that kind. By viewing event notifications as
`objects, a DAC can beseen as an entity representing related event notifications.
`Clearly, if a collection is a set of somehow related objects, a DAC can beseen as
`a set of related “events”. When considering the classical topic-based approach
`to publish/subscribe, a DAC can bepictured as an extension of a conventional
`collection but also as a representation for a topic. It is always possible to insert
`a new element into a DAC. In the sense of publish/subscribe, inserting an object
`e ABCL/1 represents an exception, in the sense that several replies may be returned
`[35].
`
`Zynga Ex. 1022, p. 10
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 10
`Zynga v. IGT
`IPR2022-00368
`
`

`

`260
`
`P.T. Eugster, R. Guerraoui, and J. Sventek
`
`Publish/Subscribe with DACs
`
`Invocation
`
`1
`
`n__
`
`Notifications
`
`Subscriber
`
`DAC
`
`g Thread
`
`| | | |
`
`|
`|
`
`|
`
`| | |
`
`AsynchronousInvocation
`
`Invocation
`
`1
`
`;
`
`Panne
`
`Client
`
`Asynchr. Object
`
`Fig. 4. DACsvs. Future
`
`into a DAC also meansto publish that object for the topic represented by the
`DAC. Every DAC can thus be viewed as a publish/subscribe engine of its own.
`Figure 5 showsthe traditional topic-based publish/subscribe scheme. The topic
`is represented by an attribute of the message, and the application has to deal
`with it explicitly. Since a DAC is boundto a topic, the topic is given implicitly,
`and appears only in the protocol message which is hidden from the application,
`as shown in Figure 6. It encapsulates the application message.
`Existing publish/subscribe frameworks introduce specialized message types,
`e.g., [12]. Our approach frees the application programmer from the burden of
`marshalling and unmarshalling data into and from dedicated messages. In our
`context, a message can be basically of any kind of object. In Java, this is ex-
`pressed by allowing any object of class java.lang.Object to be passed as a
`message.”
`
`Message m|public class Message {
`public String topic;
`
`public String content;
`
`
`
`
`
`
`
`
`—_|topic of m is “/Chat/Insomnia”
`Criteria
`|String topic = "/Chat/Insomnia"
`Argument
`
`
`Evaluation |m.topic.equals("/Chat/Insomnia")
`
`
`
`
`Fig. 5. “Traditional” Topic-Based Publish/Subscribe
`
`to be conveyable, a Java object should furthermore implement
`7 In order
`java.io.Serializable interface [15], which contains no methods.
`
`the
`
`Zynga Ex. 1022, p. 11
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 11
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Distributed Asynchronous Collections
`
`261
`
`
`|public class Message {
`Protocol
`Message p|public String getTopic() Aisiee}
`public Object getMsg() {...}
`
`Message m|public class ChatMsg {...}
`
`Criteria
`—_|topic of m is “/Chat/Insomnia”
`Argument
`|String topic = "/Chat/Insomnia"
`Evaluation |p. getTopic() .equals("/Chat/Insomnia")
`Deliver
`m = p.getMsg()
`
`
`Fig. 6. Topic-Based Publish/Subscribe with DACs
`
`4 DAC Interfaces
`
`The previous section introduced DACsas general abstractions for publish/sub-
`scribe. This section presents the main interfaces of our DACrealization in Java.
`In the context of this paper, we will limit ourselves to describing the functionali-
`ties which are commonto all DAC subinterfaces, in order to show their similarity
`to operations on conventional centralized collections.
`
`4.1 Topic-Based Subscribing with DACs
`
`In our system, each topic is represented by a DAC, and is denoted by a name,
`like “Chat”. A DAC constructor thus requires an argument which denotes the
`nameof the topic it will represent (see Section 6 for an example). Topics can
`have specializations, or subtopics, and connecting to a topic requires the name
`in a URL-type format. Typically, “/Chat/Insomnia” is a reference to the topic
`called “Insomnia” which is a subtopic of “Chat”. The root of the hierarchy is
`represented by an abstract topic (denoted by “/”). Top-level topics, which are
`no specializations of already existing ones, are subtopics of the abstract root
`topic only. Subscribing to a topic can trigger subscriptions for the subtopics as
`well, as illustrated in Figure 8. Subscriber S; subscribes to topic “Chat” and
`claims its interest in all subtopics. Hence S, does not only receive message m2
`but also message m, published for topic “/Chat/Insomnia”. In contrast, S2 only
`subscribes to “/Chat/Insomnia” and thus does not receive message m2, which
`belongs to the supertopic. With the push model adopted in DACs, subscribing
`entities must register a callback object. That callback object must implement a
`specific interface, namely the Notifiableinterface, shown in Figure 7. Through
`acall to the contains() method, the DACnotifies the subscriber that it contains
`a new notification. The second argument enables the use of the same callback
`object for several topics.
`
`Zynga Ex. 1022, p. 12
`Zyngav. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 12
`Zynga v. IGT
`IPR2022-00368
`
`

`

`P.T. Eugster, R. Guerraoui, and J. Sventek
`ineeEEEEEEESSENSE
`
`262
`
`public interface Notifiable {
`
`public void contains(Object msg, String topicName) ;
`}
`
`Fig. 7. Interface Notifiable
`
`S| Subscriber
`
`¥ -Publish
`v Subscribe
`4 Deliver
`P Publisher
`
`Fig. 8. Topic-Based Publish/Subscribe with DACs
`
`4.2 DAC Methods
`
`Figure 9 summarizes the main methods of the base DAC interface. More sophi-
`sticated interfaces like the DASet all derive from this interface, but are omitted
`for the sake of brevity. We roughly distinguish synchronous and asynchronous
`methods.
`
`Synchronous Methods. Since a DAC is in the first place a collection, the DAC
`interface inherits from the standard java.util.Collection interface. The in-
`herited methods are not denatured but adapted, and we denote them as syn-
`chronous.
`
`get(). Similarly to a centralized collection, calling this method allows to
`retrieve objects. The synchronization it introduces is however very weak,
`since it returns null in the absence of unconsumed information, as explained
`in Section 2. Which element will be returned depends on the nature of the
`collection (see Section 5 for more details). This implements the pull model.
`contains(). A DACisfirst ofall a representationofa collection of elements.
`This method allows to query thecollection for the presence of an object. Note
`that an object that is contained in a DAC belongsto the topic represented
`by that DAC.
`add(). This methodallows to add an object to the collection. The correspon-
`ding meaning for a DACis straightforward: it allows to publish a message
`for the topic represented by that collection. An asynchronousvariant of this
`method could consist in advertising the eventual production of notifications.
`Zynga Ex. 1022, p. 13
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 13
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Distributed Asynchronous Collections
`
`263
`
`This could furthermore be combined with the registration of a callback ob-
`ject, that the DAC would poll in order to obtain new event notifications. In
`the terminology adopted in [24], this is called a pullsupplier.
`
`Asynchronous Methods. We have added several asynchronous methods to ex-
`press the decoupled nature of publish/subscribe interaction specific to DACs. In
`these methods, asynchrony is expressed by an additional argument, denoting a
`callback object which implements the Notifiable interface. Not all operations
`known from conventional collections find an analogous meaning in an asynchro-
`nous distributed context, and our ongoing research in that domain might cause
`minor modifications to this interface.
`
`— contains(Notifiable n). Theeffect, for instance, of invoking this method
`is not to check if the collection already contains an object revealing certain
`characteristics, but is to manifest an interest in any such object, that should
`be eventually pushed into the collection. The interested party advertises its
`interest by providing a reference to an object implementing the Notifiable
`interface (Figure 7), through whichit will be notified of events.
`— containsAll (Notifiable n). This method offers the same signature than
`the previous method. Thedifference is that a subscription is generated for
`all subtopics of the topic represented by this DAC. This reflects the situation
`given in Figure 8.
`— remove(Notifiable n). Likewise, by calling one of these methods, a sub-
`scriber does not trigger the removal of an object already contained in the
`collection, but expresses its interest in being notified whenever an object
`matchingits criteria is inserted in the collection, after which the object will
`be removed immediately. This expresses that a message is delivered to one
`single subscriber only. This is frequently called one-for-all or one-of-n [32]
`in contrast to one-for-each,® implemented by the asynchronous contains ()
`methods, where a messageis sent to all.
`— removeAll (Notifiable n). This methodis similar to the previous one, ex-
`cept that a subscription is generatedfor all subtopics of the topic represented
`by this DAC.
`— clear(Notifiable n). The conventional argument-less clear() method al-
`lows to erase all elements from the collection, whereas this asynchronous
`variant expresses the action of unsubscribing.
`
`5 DAC Classes
`
`The previous section focused on the interfaces, through which an application can
`use DACsin orderto benefit from the strength of our publish/subscribe abstrac-
`tions. As depicted earlier, our framework consists of a variety of DACs spanning
`® By using the formalism of [27], one could say that every Nth occurrence of an event
`is notified to a subscriber, with N being the total numberof subscribers, and no
`event being delivered to more than one subscriber.
`
`Zynga Ex. 1022, p. 14
`Zyngav. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 14
`Zynga v. IGT
`IPR2022-00368
`
`

`

`264
`
`P.T. Eugster, R. Guerraoui, and J. Sventek
`
`
`public interface DAC
`extends java.util.Collection
`
`public Object get();
`public boolean contains(Object message) ;
`public boolean add(Object message) ;
`
`public boolean contains (Notifiable N);
`public boolean containsAll (Notifiable N);
`
`public boolean remove(Notifiable N);
`public boolean removeAll (Notifiable N);
`
`public void clear(Notifiable N);
`
`
`
`Fig. 9. Interface DAC (Excerpt)
`
`different semantics and guarantees, since different applications have different
`requirements. These semantics can be seenas different QoS. While certain pro-
`perties of DACsreflect in their interfaces, certain semantics do not appearin the
`API. These parameters influence the classes implementing those interfaces, and
`thus lead to a variety of classes implementing the sameinterface. This section
`presents the different properties of the classes constituting our framework.
`
`5.1 Delivery Semantics
`Whena producer publishes a message, it does not directly interact with sub-
`scribers. To whom exactly the message will be delivered does not show in the
`DACsinterface. Parts of the semantics do not cometo light in the interfaces.
`The underlying multicast protocols mightlead to different classes implementing
`the sameinterface. The DASet (Distributed AsynchronousSet) interface, for in-
`stance, is implemented by multiple classes. The first one does not offer more
`than plain unreliable delivery (DAWeakSet), whereas others guarantee reliability
`(e.g., DAStrongSet). By distinguishing between unreliable and reliable DACs our
`framework hierarchy is roughly split into two subtrees, as shown in Figure 10.
`
`5.2 Duplicates
`Just like it is possible to have duplicate elements in centralized collections,it is
`possible in Distributed Asynchronous Collections that a same message is deli-
`vered more than once. In fact, the twoare closely related in our context. If a DAC
`does not accept duplicates, it should not deliver any duplicates to subscribers.
`Zynga Ex. 1022, p. 15
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1022, p. 15
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Distributed Asynchronous Collections
`
`265
`
`The simple DAWeakBagclass for instance does not prevent a notification to
`be delivered more than once, whereas the DAWeakSet class gives stronger gua-
`rantees by eliminating duplicate elements. This property is orthogonal to other
`characteristics of our DACs. For that reason, our framework contains a variant
`with and without duplicates for every other property, as shown in Figure 10.
`When allowing duplicates and combining with unreliable delivery for instance,
`the outcomeis best-effort semantics. In return, with reliable delivery, at-least-
`once semantics can be guaranteed.
`
`At-most-once
` At-least-once
`
`Exactly-once
`
`Implicit
`
`Best-effort
`
`Explicit
`
`At-least-once Epos
`FIFO
`FIFO
`
`At-least-once
`Total Order
`
`Exactly-once
`Total Order
`
`Fig. 10. DAC Framework
`
`5.3 Storage vs. Delivery Order
`
`Collect

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