ENSEIRB, FranceCall/CSeptember 29, 2003 Call/C: A Domain Specific Language for IP Telephony Services Claus Brabrand [ joint work with Charles Consel &

Slides:



Advertisements
Similar presentations
Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July Phoenix Research Group INRIA / LaBRI Staging Telephony.
Advertisements

A Stepwise Approach to Developing Languages for SIP Telephony Service Creation Nicolas Palix*, Charles Consel*, Laurent Réveillère*, Julia Lawall * Phoenix.
Introduction to Eclipse. Start Eclipse Click and then click Eclipse from the menu: Or open a shell and type eclipse after the prompt.
Comparison of SIP Proxy and Redirect Servers
Feature Interaction Handling in LESS Xiaotao Wu and Henning Schulzrinne Internet Real Time Laboratory.
Microsoft Research March 20, 2000 A Programming Language for Developing Interactive Web Services Claus Brabrand BRICS, University of Aarhus, Denmark.
Programming Languages and Paradigms
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
RPC Robert Grimm New York University Remote Procedure Calls.
Signalling Flows for the IP Multimedia Call Control in 3G Wireless Network Master’s Project By Sanjeev Kayath.
The Kernel Abstraction. Challenge: Protection How do we execute code with restricted privileges? – Either because the code is buggy or if it might be.
Tam Vu Remote Procedure Call CISC 879 – Spring 03 Tam Vu March 06, 03.
INRIA - LaBRICompose Group Generative Programming from a DSL Viewpoint Charles Consel Compose Research Group LaBRI – INRIA-Futurs 2004.
DISTRIBUTED FILE SYSTEM USING RMI
Session Initiation Protocol (SIP) By: Zhixin Chen.
28/1/2001 Seminar in Databases in the Internet Environment Introduction to J ava S erver P ages technology by Naomi Chen.
Cmpe 491 Special Project In Computer Engineering SIP User Agent In JAVA Alp Eren YILMAZ & Serdar YALÇINKAYA.
Principles of Object-Oriented Software Development The language Java.
Where should services reside in Internet Telephony Systems? Xiaotao Wu, Henning Schulzrinne {xiaotaow, Department of Computer Science,
An Introduction to SIP Moshe Sambol Services Research Lab November 18, 1998.
Internet Telephony Helen J. Wang Network Reading Group, Jan 27, 99 Acknowledgement: Jimmy, Bhaskar.
Communication in Distributed Systems –Part 2
H.323/ SIP Internet Telephony Gateway
Session Initialization Protocol (SIP)
Introduction to Java CSIS 3701: Advanced Object Oriented Programming.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Call Control with SIP Brian Elliott, Director of Engineering, NMS.
Introduction to SIP Based ENUM IP Telephony Infrastructure 資策會 網路及通訊實驗室 Conference over IP Team 楊政遠 博士
1 Specialization Tools and Techniques for Systematic Optimization of System Software McNamee, Walpole, Pu, Cowan, Krasic, Goel, Wagle, Consel, Muller,
H.323 An International Telecommunications Union (ITU) standard. Architecture consisting of several protocols oG.711: Encoding and decoding of speech (other.
Countermeasures of Spam over Internet Telephony in SIP.edu Campuses with MySQL and LDAP Support Speaker: Chang-Yu Wu Adviser: Dr. Quincy Wu School: National.
VoN September ‘98 1 9/17/98 VoN Standards Update Jonathan Rosenberg Bell Laboratories September 17, 1998.
Programming Languages and Paradigms Imperative Programming.
SIP:Session Initiation Protocol Che-Yu Kuo Computer & Information Science Department University of Delaware May 11, 2010 CISC 856: TCP/IP and Upper Layer.
Chapter 15 Introduction to PL/SQL. Chapter Objectives  Explain the benefits of using PL/SQL blocks versus several SQL statements  Identify the sections.
Omar A. Abouabdalla Network Research Group (USM) SIP – Functionality and Structure of the Protocol SIP – Functionality and Structure of the Protocol By.
1 Representing New Voice Services and Their Features Ken Turner University of Stirling 11th June 2003.
Interactive Connectivity Establishment : ICE
Introduction and Principles Web Server Scripting.
C++ Programming Lecture 14 Arrays – Part I The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
A Framework for Automated and Composable Testing of Component-based Services Miguel A. Jiménez, Ángela Villota, Norha M. Villegas, Gabriel Tamura, Laurence.
A S P. Outline  The introduction of ASP  Why we choose ASP  How ASP works  Basic syntax rule of ASP  ASP’S object model  Limitations of ASP  Summary.
Distributed Web Systems Distributed Objects and Remote Method Invocation Lecturer Department University.
سمینار تخصصی What is PSTN ? (public switched telephone network) تیرماه 1395.
January 26, Ann Wollrath Copyright 1999 Sun Microsystems, Inc., all rights reserved. Java ™ RMI Overview Ann Wollrath Senior Staff Engineer Sun Microsystems,
SIP Programming : SIP has texture encoding feature.[1]
IP Telephony (VoIP).
Comparison of SIP Proxy and Redirect Servers
CORBA: An Overview Mojtaba Hosseini.
SIX MONTHS INDUSTRIAL TRAINING REPORT
Deploying IP Telephony
Internet Multimedia Conferencing: What now?
Session Initiation Protocol (SIP)
Jonathan Rosenberg Bell Laboratories 8/24/98
Client-Server Interaction
Net 431: ADVANCED COMPUTER NETWORKS
Net 431 D: ADVANCED COMPUTER NETWORKS
Where should services reside in Internet Telephony Systems?
Nortel/SIPcomm/Columbia co-operation in IP Telephony
DISTRIBUTED COMPUTING
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
Introduction to Servlets
Govt. Polytechnic,Dhangar
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Language-based Security
Software interoperability in the NGN Service layer
SIP Basics Workshop Dennis Baron July 20, 2005.
Computer Networks DA2402.
Static Analysis: Data-Flow Analysis I
Exceptions and networking
Presentation transcript:

ENSEIRB, FranceCall/CSeptember 29, 2003 Call/C: A Domain Specific Language for IP Telephony Services Claus Brabrand [ joint work with Charles Consel & Fabien Latry ] COMPOSE Group INRIA, University of Bordeaux I, France

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Introduction  Yesterday: "Call a place"

ENSEIRB, FranceCall/CSeptember 29, 2003 Introduction  Today: "Call a phone"

ENSEIRB, FranceCall/CSeptember 29, 2003 Introduction  Tomorrow: "Call a person"

ENSEIRB, FranceCall/CSeptember 29, 2003 Introduction  Tomorrow: "Call a person"

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003  SIP (Session Initiation Protocol ): Infrastructure (SIP)

ENSEIRB, FranceCall/CSeptember 29, 2003  SIP (Session Initiation Protocol ): Infrastructure (SIP) SIP Servers

ENSEIRB, FranceCall/CSeptember 29, 2003  SIP (Session Initiation Protocol ): Infrastructure (SIP) SIP Servers SIP Clients

ENSEIRB, FranceCall/CSeptember 29, 2003 Infrastructure (SIP) SIP Servers SIP Clients  SIP (Session Initiation Protocol ):

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chirac

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chirac

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chiracelysee.fr REGISTER 200 OK Location server: [chirac  ] 200 OK

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chiracelysee.fr REGISTER 200 OK Location server: [chirac  ] 200 OK

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chiracelysee.fr REGISTER 200 OK Location server: [chirac  ] 200 OK

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chiracelysee.fr REGISTER 200 OK Location server: [chirac  ] 200 OK

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chiracelysee.fr REGISTER 200 OK Location server: [chirac  ] 200 OK

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chiracelysee.fr REGISTER 200 OK Location server: [chirac  ] 200 OK

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Registration) chiracelysee.fr REGISTER 200 OK Location server: [chirac  ] 200 OK

ENSEIRB, FranceCall/CSeptember 29, 2003  Call:  SIP (Initiation) chiracelysee.frwhitehouse.gov bush

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication OK 302 Moved Temporarily 486 Busy Here 603 Decline...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication OK 302 Moved Temporarily 486 Busy Here 603 Decline...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 SIP (Initiation) chiracelysee.frwhitehouse.gov bush INVITE bush? Location server: [bush  ] DNS lookup: whitehouse.gov? 200 OK accept ring ACK...multi-media communication...

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Programming Telephony Services call forward response fixed behavior lookup

ENSEIRB, FranceCall/CSeptember 29, 2003 Programming Telephony Services call response programmable

ENSEIRB, FranceCall/CSeptember 29, 2003 Programming Telephony Services call response programmable  Dependent on (time, request, preferences, state, …): if(…) else

ENSEIRB, FranceCall/CSeptember 29, 2003 Programming Telephony Services call response programmable  Dependent on (time, request, preferences, state, …):  Signalling actions:  lookup, forward, respond forward if(…) else

ENSEIRB, FranceCall/CSeptember 29, 2003 Programming Telephony Services call response programmable  Dependent on (time, request, preferences, state, …):  Signalling actions:  lookup, forward, respond  Non-signalling actions:  computations, remote procedure calls, side-effects,... forward y = f(x) if(…) else

ENSEIRB, FranceCall/CSeptember 29, 2003 Existing Solutions  General Purpose Languages:  SIP Common Gateway Interface (SIP/CGI)  Java SIP Servlets ...

ENSEIRB, FranceCall/CSeptember 29, 2003 Existing Solutions  General Purpose Languages:  SIP Common Gateway Interface (SIP/CGI)  Java SIP Servlets ... Expressive, but unsafe

ENSEIRB, FranceCall/CSeptember 29, 2003 Existing Solutions  General Purpose Languages:  SIP Common Gateway Interface (SIP/CGI)  Java SIP Servlets ... Expressive, but unsafe

ENSEIRB, FranceCall/CSeptember 29, 2003 Safety  Requirements for a call processing language:  Verifiability:  Call completion:  Safety of execution: ... "Programming Internet Telephony Services" -- J. Rosenberg, J. Lennox, and H. Schulzrinne

ENSEIRB, FranceCall/CSeptember 29, 2003 Safety  Requirements for a call processing language:  Verifiability:  Static syntactic/semantic analysis  Call completion:  Safety of execution: ... "Programming Internet Telephony Services" -- J. Rosenberg, J. Lennox, and H. Schulzrinne

ENSEIRB, FranceCall/CSeptember 29, 2003 Safety  Requirements for a call processing language:  Verifiability:  Static syntactic/semantic analysis  Call completion:  All calls handled (termination)  Safety of execution: ... "Programming Internet Telephony Services" -- J. Rosenberg, J. Lennox, and H. Schulzrinne

ENSEIRB, FranceCall/CSeptember 29, 2003 Safety  Requirements for a call processing language:  Verifiability:  Static syntactic/semantic analysis  Call completion:  All calls handled (termination)  Safety of execution:  Controlled access to underlying server and platform  Bounded resource consumption ... "Programming Internet Telephony Services" -- J. Rosenberg, J. Lennox, and H. Schulzrinne

ENSEIRB, FranceCall/CSeptember 29, 2003 Existing Solutions (cont’d)  General Purpose Languages:  SIP Common Gateway Interface (SIP/CGI)  Java SIP Servlets ... Expressive, but unsafe

ENSEIRB, FranceCall/CSeptember 29, 2003 Existing Solutions (cont’d)  General Purpose Languages:  SIP Common Gateway Interface (SIP/CGI)  Java SIP Servlets ...  Domain Specific Languages:  The Call Processing Language (CPL) Expressive, but unsafe

ENSEIRB, FranceCall/CSeptember 29, 2003 Existing Solutions (cont’d)  General Purpose Languages:  SIP Common Gateway Interface (SIP/CGI)  Java SIP Servlets ...  Domain Specific Languages:  The Call Processing Language (CPL) Expressive, but unsafe Safe, but inexpressive

ENSEIRB, FranceCall/CSeptember 29, 2003 Existing Solutions (cont’d)  General Purpose Languages:  SIP Common Gateway Interface (SIP/CGI)  Java SIP Servlets ...  Domain Specific Languages:  The Call Processing Language (CPL) Expressive, but unsafe Safe, but inexpressive

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Interaction Approach Rest of Internet Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Interaction Approach Rest of Internet call Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Interaction Approach Rest of Internet call lookup Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Interaction Approach Rest of Internet call result lookup Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Interaction Approach Rest of Internet call forward result lookup Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Interaction Approach Rest of Internet call response forward result lookup Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Interaction Approach Rest of Internet call response forward result lookup Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Implicit Control-Flow Rest of Internet call response forward result lookup Telephony Service

ENSEIRB, FranceCall/CSeptember 29, 2003 Manually save/restore state Rest of Internet call response forward result lookup Telephony Service SAVE SAVE RESTORE RESTORE

ENSEIRB, FranceCall/CSeptember 29, 2003 Session-Centered with High-Level Signalling Abstractions 1 Service Program Rest of Internet forward lookup call return

ENSEIRB, FranceCall/CSeptember 29, 2003 Explicit Control-Flow Rest of Internet forward lookup call return 1 Service Program

ENSEIRB, FranceCall/CSeptember 29, 2003 Automatically Compiled to Underlying model (with save/restore) Rest of Internet forward lookup call return SAVE;EXIT RESTORE RESTORE 1 Service Program

ENSEIRB, FranceCall/CSeptember 29, 2003 C-like core language with...  Safety restrictions:  Domain-specific extensions:

ENSEIRB, FranceCall/CSeptember 29, 2003 C-like core language with...  Safety restrictions:  Looping control structures: do / while / for  Recursion, pointers, array indexing,...  Domain-specific extensions:

ENSEIRB, FranceCall/CSeptember 29, 2003 C-like core language with...  Safety restrictions:  Looping control structures: do / while / for  Recursion, pointers, array indexing,...  Domain-specific extensions:  Session abstractions: incoming / outgoing  Signalling abstractions: forward / lookup / return  SIP address type: sip  Predefined structures: call / response  Predefined responses: ok / busy / decline /...

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003  Decline calls outside working hours…: Call/C Example I bool isWorkHour() { time t = now(); if (t.weekday > FRIDAY) return false; return (t.hour >= 9) && (t.hour <= 17); } response incoming(call in) { if (!isWorkHour()) { return decline("OFFICE HOURS 9-17"); }

ENSEIRB, FranceCall/CSeptember 29, 2003  Forward depending on caller…: Call/C Example II sip WORK_PHONE = sip CELL_PHONE = response incoming(call in) { if (in.from ~ { in.subject = "[WORK: " + in.subject + "]"; return forward(in, WORK_PHONE); } else { return forward(in, CELL_PHONE); }

ENSEIRB, FranceCall/CSeptember 29, 2003  Forward unhandled calls to secretary…: Call/C Example III sip BOSS = sip SECRETARY = response incoming(call in) { response x = forward(in, BOSS); switch (x) { case busy: case decline: in.subject = "[Fwd: " + in.subject + "]"; return forward(in, SECRETARY); default: return x; }

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Domain Specific Analyses   Domain-specific optimization response x; … x = forward(in, return x;

ENSEIRB, FranceCall/CSeptember 29, 2003 Domain Specific Analyses   Domain-specific optimization  Tail-call identification:  Disable script invocation after forward  Default (SIP server) behavior: propagate response response x; … x = forward(in, return x;

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Outline  Introduction  Infrastructure (SIP)  Programming Telephony Services  Call/C  Examples  Domain Specific Analysis  Conclusion and Future Work

ENSEIRB, FranceCall/CSeptember 29, 2003 Future Work  Composable services:  Specification and semantics  Interference analysis

ENSEIRB, FranceCall/CSeptember 29, 2003 Future Work  Composable services:  Specification and semantics  Interference analysis  Cost analysis:  Resource cost models for billing, admission control, server size prediction, …

ENSEIRB, FranceCall/CSeptember 29, 2003 Future Work  Composable services:  Specification and semantics  Interference analysis  Cost analysis:  Resource cost models for billing, admission control, server size prediction, …  Capability-based compilation:  Different users have different capabilities

ENSEIRB, FranceCall/CSeptember 29, 2003 Conclusion  Safety:  Verifiability  Call completion  Safety of execution

ENSEIRB, FranceCall/CSeptember 29, 2003 Conclusion  Safety:  Verifiability  Call completion  Safety of execution  Expressivity:  Enough for many interesting services (beyond CPL)

ENSEIRB, FranceCall/CSeptember 29, 2003 Conclusion  Safety:  Verifiability  Call completion  Safety of execution  Expressivity:  Enough for many interesting services (beyond CPL)  …and "usual" DSL benefits:  Conciseness, readability, maintainability, usability,...

ENSEIRB, FranceCall/CSeptember 29, 2003 Merci!

ENSEIRB, FranceCall/CSeptember 29, 2003 [ bonus slides ]

ENSEIRB, FranceCall/CSeptember 29, 2003 Session Abstractions: incoming / outgoing // declarations response incoming(call in) { // handle incoming call } response outgoing(call out) { // handle outgoing call }  Program bound to user (SIP address) dispatched when: in.to == user dispatched when: out.from == user

ENSEIRB, FranceCall/CSeptember 29, 2003 response incoming(call in) { response x; in.subject = "Hello!"; x = forward(in, return x; } Predefined Structures: call / response struct call { sip from; sip to; string subject; sip[] via; } union response { { } ok; // 200 OK { string contact; } redirect; // 302 MOVED TEMP’LY { } busy; // 486 BUSY HERE { string reason; } decline; // 603 DECLINE { int code; } error; // xxx ERROR... }

ENSEIRB, FranceCall/CSeptember 29, 2003 Domain Specific Analyses   Domain-specific verification: response incoming(call in) { … if (…) { … x = forward(in, s); … } … x = forward(in, … return x; }

ENSEIRB, FranceCall/CSeptember 29, 2003 Domain Specific Analyses   Domain-specific verification: response incoming(call in) { … if (…) { … x = forward(in, s); … } … x = forward(in, … return x; } Explicit control-flow!