CCA Event Specification Proposal

Slides:



Advertisements
Similar presentations
DISTRIBUTED COMPUTING PARADIGMS
Advertisements

Chapter 24 Lists, Stacks, and Queues
Containers CMPS Reusable containers Simple data structures in almost all nontrivial programs Examples: vectors, linked lists, stacks, queues, binary.
Universal event handling for components in Kentico CMS
CSCC69: Operating Systems
Agenda –interfaces and realization –type hierarchy –introduction to graphics and event handling.
1 Chapter 24 Lists Stacks and Queues. 2 Objectives F To design list with interface and abstract class (§24.2). F To design and implement a dynamic list.
Slides prepared by Rose Williams, Binghamton University Chapter 17 Swing I.
Programming Based on Events
Interfaces. In this class, we will cover: What an interface is Why you would use an interface Creating an interface Using an interface Cloning an object.
Template class Wrapper { public: T* operator->() { return &myT; } private: T myT; }; int main() { Wrapper wThing; wThing- >Foo(); // calls Thing::Foo()...
The Composite Pattern.. Composite Pattern Intent –Compose objects into tree structures to represent part-whole hierarchies. –Composite lets clients treat.
Lecture 18 Review the difference between abstract classes and interfaces The Cloneable interface Shallow and deep copies The ActionListener interface,
C++ Functions. 2 Agenda What is a function? What is a function? Types of C++ functions: Types of C++ functions: Standard functions Standard functions.
C# Event Processing Model Solving The Mystery. Agenda Introduction C# Event Processing Macro View Required Components Role of Each Component How To Create.
A.k.a. GUI’s.  If you want to discuss your Lab 2 grade come see me this week. ◦ Office: 436 ERB. One hour prior to class ◦ Open to Appointments MWF 
REFACTORING Lecture 4. Definition Refactoring is a process of changing the internal structure of the program, not affecting its external behavior and.
ACM/JETT Workshop - August 4-5, ExceptionHandling and User Interfaces (Event Delegation, Inner classes) using Swing.
1 I-Logix Professional Services Specialist Rhapsody IDF (Interrupt Driven Framework) CPU External Code RTOS OXF Framework Rhapsody Generated.
Chapter 3 Introduction to Collections – Stacks Modified
World Wide Web Hypertext model Use of hypertext in World Wide Web (WWW) WWW client-server model Use of TCP/IP protocols in WWW.
WebDAV Issues Munich IETF August 11, Property URL encoding At present, spec. allows encoding of the name of a property so it can be appended to.
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall
OPERATING SYSTEMS Goals of the course Definitions of operating systems Operating system goals What is not an operating system Computer architecture O/S.
Data Structures and Java CS 105. L7: Java Slide 2 Data structure Data structure defined: A systematic way of organizing and accessing data Examples Dictionary:
(Business) Process Centric Exchanges
DISTRIBUTED COMPUTING PARADIGMS. Paradigm? A MODEL 2for notes
High Performance Event Service for CCA Framework: Design and Experiences Khushbu Agarwal Manoj Krishnan Daniel Chavarria Ian Gorton.
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall
Slides prepared by Rose Williams, Binghamton University ICS201 Lecture 13 : Swing I King Fahd University of Petroleum & Minerals College of Computer Science.
GUIs in Java Swing, Events CS2110, SW Development Methods Readings: MSD, Chapter 12 Lab Exercise.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
Distributed Systems Principles and Paradigms Chapter 12 Distributed Coordination-Based Systems 01 Introduction 02 Communication 03 Processes 04 Naming.
Recap form last time How to do for loops map, filter, reduce Next up: dictionaries.
Design Patterns CSIS 3701: Advanced Object Oriented Programming.
Creational Pattern: Factory Method At times, a framework is needed to standardize the behavior of objects that are used in a range of applications, while.
Processes CS 6560: Operating Systems Design. 2 Von Neuman Model Both text (program) and data reside in memory Execution cycle Fetch instruction Decode.
Events in General. Agenda Post/wait technique I/O multiplexing Asynchronous I/O Signal-driven I/O Database events Publish/subscribe model Local vs. distributed.
GUIs Basic Concepts. GUI GUI : Graphical User Interface Window/Frame : a window on the screen Controls/Widgets : GUI components.
Introduction to Object-Oriented Programming Lesson 2.
SEG 4110 – Advanced Software Design and Reengineering Topic T Introduction to Refactoring.
Arrays & Enum & Events. Arrays Arrays are data structures consisting of related data items of the same type. Arrays are fixed-length entities—they remain.
CS 350 – Software Design The Decorator Pattern – Chapter 17 In this chapter we expand our e-commerce case study and learn how to use the Decorator Pattern.
FUNCTIONS (C) KHAERONI, M.SI. OBJECTIVE After this topic, students will be able to understand basic concept of user defined function in C++ to declare.
Mutual Exclusion -- Addendum. Mutual Exclusion in Critical Sections.
CIS NET Applications1 Chapter 6 – Events. CIS NET Applications2 Objectives Delegate-based Events.NET event support Practical guides for managing.
Lecture 5 Page 1 CS 111 Summer 2013 Bounded Buffers A higher level abstraction than shared domains or simple messages But not quite as high level as RPC.
Express Spring Integration
Lecture 28 Concurrent, Responsive GUIs
Miscellaneous Topics #6: Polygons GUI Components and Event Handlers
This pointer, Dynamic memory allocation, Constructors and Destructor
C# Event Processing Model
Chapter 27 WWW and HTTP.
Harjutus 3: Aünkroonne hajussüsteemi päring
Delegates & Events 1.
Message Service System
Lesson 7. Events, Delegates, Generics.
CIS16 Application Development and Programming using Visual Basic.net
Chapter 24 Implementing Lists, Stacks, Queues, and Priority Queues
1/10/2019 JavaFX Events COSC 330.
Cs212: Data Structures Computer Science Department Lecture 7: Queues.
Jonathan Rosenberg dynamicsoft
Message Service System
WebDAV Design Overview
Chapter 11 Data Link Control
Interfaces.
Review of Previous Lesson
Creating and Using Classes
Events, Delegates, and Lambdas
Presentation transcript:

CCA Event Specification Proposal Steven Parker

Events The essence of events are very simple. Abstract the notion of an occurrence in the system from what should be done when it occurs. So, instead of having a function that is called when something happens, raise the event (hey, this happened), and let the handlers for that event to process that event.

Events: Asynchronous Processing Events don’t have to be asynchronous You can raise an event, and wait for it to be handled if you want Of course, events are most useful when asynchronous processing is supported You raise the event, and return right away. The event handlers fire and complete as they can.

Event Contents Every event needs a body The body contains the information needed to handle the event. For example, changed text in the text box. It is common, but not required to include a reference to the event sender. Also, in some systems, there is a event header and properties More common in distributed systems.

Events: Publish-Subscribe Model One can add the notion of topics, which are named channels on which events are sent and received. To send an event on a topic, you publish that event To receive the events that are sent on a topic, you subscribe to that topic.

Event Topics It is often useful to organize topics into an hierarchy. This organizes the namespace better Also, this allows us to subscribe to topic groups To get all events that are published to topics within that group.

Topic Examples In these examples, we use the topic naming scheme espoused by the TIBCO middleware system One could use a URI based scheme, but the idea is the same. Example 1: A simple topic. signals.processExit We have a processExit topic in the signals topic group.

Topic Examples Example 2: Another simple topic workflow.control.exceptions.processExit While the topic has the same name, it is in a different group, therefore, it is different. Example 3: Wildcard topic. signals.* This matches every topic in the signals group (including sub-groups).

Topic Wildcards The use of wildcards allows us to subscribe to a whole set of topics at once. Of course, the top-level wildcard topic ‘*’ allows us to receive every event in the system. With some exceptions. More complex matching can be supported Allowing topics like *.signals.*.processExit We disallow this in the first drafts of the spec.

CCA Event Specification Centers on four classes, one interface EventService: Manages the EventService Including global resources, properties, etc. TopicManager: Factory for Topic objects Topics can not be made directly. Topic: Represents a topic Stores properties, allows for events to be raised, event handlers to added, removed.

CCA Event Specification Event: Allows for the creation of an event This includes the event body and a header Event body and header are typemaps EventHandler: Abstract Interface Any actual event handler must implement this interface to receive events.

Example (C++ Fragment) Topic echoTopic = TopicManager.CreateTopic(“services.echo”); echoTopic.AddHandler(“handlerKey1”, new EchoEventHandler()); if (echoTopic != null) { echoTopic.RaiseEvent(new Event(“Hello World”)); } class EchoEventHandler : IEventHandler { void HandleEvent(Object Sender, Event newEvent) cout << newEvent.Body(); }

Outstanding concerns (BenGripestm) Strings for event topics is less efficient than classes Much easier for the user Allows more flexible wildcarding Avoids explosion of tiny classes Conscious tradeoff Potential solutions: Make wildcarding optional? Assume events not performance critical

Outstanding concerns (BenGripestm) Typemap payload is inefficient Must copy to avoid hijacking by component listeners Solution: Fix typemap by adding immutable tags (freeze/thaw)

Outstanding concerns (BenGripestm) Event payload is cumbersome Inconvenient to get common data from typemaps Event payload has component strings instead of component pointers (typemap cannot hold objects) Solutions: Fix typemap by allowing objects Add convenience methods for common values in Event interface

Outstanding concerns (BenGripestm) No scoping considered Solution: Please give us use cases