Cisco Cisco Computer Telephony Integration Option 9.0 Developer's Guide

Page of 668
 
2-3
CTI OS Developer’s Guide for Cisco ICM/IPCC Enterprise & Hosted Editions Release 7.1(1)
 
Chapter 2      CTI OS Client Interface Library Architecture
Client Interface Library 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 sockets 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 between 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.