Cisco Cisco Computer Telephony Integration Option 8.5 Developer's Guide

Page of 506
   
2-2
CTI OS Developer’s Guide for Cisco Unified Contact Center Enterprise
Release 8.5(1)
Chapter 2      CTI OS Client Interface Library Architecture
Client Interface Library Architecture
Figure 2-2
Client Interface Library Three-Tiered Architecture
Connection Layer
The Connection layer provides basic communication and connection recovery facilities to the CIL. It 
creates the foundation, or bottom tier of the CIL’s layered architecture, and decouples the higher-level 
event and message architecture from the low-level communication link (TCP/IP sockets). The 
Connection layer sends and receives socket messages to the CTI OS Server, where it connects to a 
server-side connection layer. 
In addition to basic communication facilities, the connection layer provides fault tolerance to the CIL by 
automatically detecting and recovering from a variety of network failures. The Connection layer uses a 
heartbeat-by-exception mechanism, sending heartbeats only when the connection has been silent for 
some period of time to detect network-level failures. 
Service Layer
The Service layer sits between the connection layer and the Object Interface layer. Its main purpose is 
to translate the low-level network packets sent and received by the connection layer and the high-level 
command and event messages used in the Object Interface layer. The Service layer implements a generic 
message serialization protocol which translates key-value pairs into a byte stream for network 
transmission and deserializes the messages back to key-value pairs on the receiving side. This generic 
serialization mechanism ensures forward-compatibility, since future enhancements to the message set 
will not require any changes at the Connection or Service layers. 
A secondary purpose of the Service layer is to isolate the client from the network, such that network 
issues do not block the client and vice versa. This is done via a multi-threading model which allows 
user-program execution to continue without having to ‘block’ on network message sending or receiving. 
This prevents client applications from getting ‘stuck’ when a message is not immediately dispatched 
across the network, and allows messages to be received from the network even if the client application 
is temporarily blocked.