www.pudn.com > TsapiCallRouting.rar > utilities.cpp
#include "stdafx.h" #include#include #include #include #include #include "utilities.h" #include "global.h" void outputACSevent( char *func, CSTAEvent_t *eventBufPtr ) { if ( ! DBG1 ) return; CString retrievedStr; CString *cs = new CString; CString *csPtr; CString *csEventType = makeACSEventTypeStr( eventBufPtr->eventHeader.eventType ); switch( eventBufPtr->eventHeader.eventClass ) { case ACSCONFIRMATION: (void) (void) retrieveFromHashMap( eventBufPtr->event.acsConfirmation.invokeID, retrievedStr ); cs->Format( "ACSCONFIRMATION: invokeID=%d %s\n %s", eventBufPtr->event.acsConfirmation.invokeID, retrievedStr.GetString(), csEventType->GetString() ); switch( eventBufPtr->eventHeader.eventType ) { case ACS_OPEN_STREAM: { break; } case ACS_OPEN_STREAM_CONF: { *cs += "\n apiVer="; *cs += eventBufPtr->event.acsConfirmation.u.acsopen.apiVer; *cs += " drvrVer="; *cs += eventBufPtr->event.acsConfirmation.u.acsopen.drvrVer; *cs += " libVer="; *cs += eventBufPtr->event.acsConfirmation.u.acsopen.libVer; *cs += " tsrvVer="; *cs += eventBufPtr->event.acsConfirmation.u.acsopen.tsrvVer; break; } case ACS_CLOSE_STREAM: { break; } case ACS_CLOSE_STREAM_CONF: { break; } case ACS_ABORT_STREAM: { break; } case ACS_UNIVERSAL_FAILURE: case ACS_UNIVERSAL_FAILURE_CONF: { *cs += "\n error="; csPtr = makeACSUFStr( eventBufPtr->event.acsConfirmation.u.failureEvent.error ); *cs += csPtr->GetString(); delete csPtr; break; } case ACS_KEY_REQUEST: { break; } case ACS_KEY_REPLY: { break; } case ACS_NAME_SRV_REQUEST: { break; } case ACS_NAME_SRV_REPLY: { break; } case ACS_AUTH_REPLY: { break; } case ACS_AUTH_REPLY_TWO: { break; } default: { *cs += "\n Invalid eventType Context"; break; } } break; case ACSUNSOLICITED: cs->Format( "ACSUNSOLICITED:\n %s", csEventType->GetString() ); switch( eventBufPtr->eventHeader.eventType ) { case ACS_UNIVERSAL_FAILURE: case ACS_UNIVERSAL_FAILURE_CONF: { *cs += "\n "; csPtr = makeACSUFStr( eventBufPtr->event.acsUnsolicited.u.failureEvent.error ); *cs += csPtr->GetString(); delete csPtr; break; } default: { *cs += "\n Invalid eventType Context"; } } break; default: csPtr = new CString; csPtr->Format( "unknown eventClass=%d:\n %s", eventBufPtr->eventHeader.eventClass, csEventType->GetString() ); *cs += csPtr->GetString(); delete csPtr; break; } DBG1_OUT( func, "%s", cs->GetString() ); delete cs; delete csEventType; } void outputCSTAevent( char *func, CSTAEvent_t *eventBufPtr, ATTEvent_t *attEvent ) { if ( ! DBG1 ) return; CString retrievedStr; CString *cs = new CString; CString *csPtr; CString *csEventType = makeCSTAEventTypeStr( eventBufPtr->eventHeader.eventType ); switch( eventBufPtr->eventHeader.eventClass ) { case CSTACONFIRMATION: (void) (void) retrieveFromHashMap( eventBufPtr->event.cstaConfirmation.invokeID, retrievedStr ); cs->Format( "CSTACONFIRMATION: invokeID=%d %s\n %s", eventBufPtr->event.cstaConfirmation.invokeID, retrievedStr.GetString(), csEventType->GetString() ); switch( eventBufPtr->eventHeader.eventType ) { case CSTA_ALTERNATE_CALL_CONF: { break; } case CSTA_ANSWER_CALL_CONF: { break; } case CSTA_CALL_COMPLETION_CONF: { break; } case CSTA_CLEAR_CALL_CONF: { break; } case CSTA_CLEAR_CONNECTION_CONF: { break; } case CSTA_CONFERENCE_CALL_CONF: { *cs += "\n newCall="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaConfirmation.u.conferenceCall.newCall ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n connList="; csPtr = makeConnectionListStr( &eventBufPtr->event.cstaConfirmation.u.conferenceCall.connList ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_CONSULTATION_CALL_CONF: { *cs += "\n newCall="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaConfirmation.u.consultationCall.newCall ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_DEFLECT_CALL_CONF: { break; } case CSTA_PICKUP_CALL_CONF: { break; } case CSTA_GROUP_PICKUP_CALL_CONF: { break; } case CSTA_HOLD_CALL_CONF: { break; } case CSTA_MAKE_CALL_CONF: { break; } case CSTA_MAKE_PREDICTIVE_CALL_CONF: { break; } case CSTA_QUERY_MWI_CONF: { break; } case CSTA_QUERY_DND_CONF: { break; } case CSTA_QUERY_FWD_CONF: { break; } case CSTA_QUERY_AGENT_STATE_CONF: { break; } case CSTA_QUERY_LAST_NUMBER_CONF: { break; } case CSTA_QUERY_DEVICE_INFO_CONF: { break; } case CSTA_RECONNECT_CALL_CONF: { break; } case CSTA_RETRIEVE_CALL_CONF: { break; } case CSTA_SET_MWI_CONF: { break; } case CSTA_SET_DND_CONF: { break; } case CSTA_SET_FWD_CONF: { break; } case CSTA_SET_AGENT_STATE_CONF: { break; } case CSTA_TRANSFER_CALL_CONF: { break; } case CSTA_UNIVERSAL_FAILURE_CONF: { *cs += "\n "; csPtr = makeCSTAUFStr( eventBufPtr->event.cstaConfirmation.u.universalFailure.error ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_QUEUED: { break; } case CSTA_CALL_INFORMATION: { break; } case CSTA_DO_NOT_DISTURB: { break; } case CSTA_FORWARDING: { break; } case CSTA_MESSAGE_WAITING: { break; } case CSTA_LOGGED_ON: { break; } case CSTA_LOGGED_OFF: { break; } case CSTA_NOT_READY: { break; } case CSTA_READY: { break; } case CSTA_WORK_NOT_READY: { break; } case CSTA_WORK_READY: { break; } case CSTA_ROUTE_REGISTER_REQ_CONF: { csPtr = new CString; csPtr->Format( "\n registerReqID=%ld", eventBufPtr->event.cstaConfirmation.u.routeRegister.registerReqID ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_ROUTE_REGISTER_CANCEL_CONF: { break; } case CSTA_ROUTE_REGISTER_ABORT: { break; } case CSTA_ROUTE_REQUEST: { break; } case CSTA_ROUTE_SELECT_REQUEST: { break; } case CSTA_RE_ROUTE_REQUEST: { break; } case CSTA_ROUTE_USED: { break; } case CSTA_ROUTE_END: { break; } case CSTA_ROUTE_END_REQUEST: { break; } case CSTA_ESCAPE_SVC_CONF: { break; } case CSTA_ESCAPE_SVC_REQ_CONF: { break; } case CSTA_PRIVATE: { break; } case CSTA_PRIVATE_STATUS: { break; } case CSTA_SEND_PRIVATE: { break; } case CSTA_BACK_IN_SERVICE: { break; } case CSTA_OUT_OF_SERVICE: { break; } case CSTA_REQ_SYS_STAT_CONF: { break; } case CSTA_SYS_STAT_START_CONF: { break; } case CSTA_SYS_STAT_STOP_CONF: { break; } case CSTA_CHANGE_SYS_STAT_FILTER_CONF: { break; } case CSTA_SYS_STAT: { break; } case CSTA_SYS_STAT_ENDED: { break; } case CSTA_SYS_STAT_REQ_CONF: { break; } case CSTA_SYS_STAT_EVENT_SEND: { break; } case CSTA_MONITOR_DEVICE: { break; } case CSTA_MONITOR_CALL: { break; } case CSTA_MONITOR_CALLS_VIA_DEVICE: { break; } case CSTA_MONITOR_CONF: { csPtr = new CString; csPtr->Format( "\n monitorCrossRefID=%d", eventBufPtr->event.cstaConfirmation.u.monitorStart.monitorCrossRefID ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n monitorFilter="; csPtr = makeCSTAMonitorFilterStr( &eventBufPtr->event.cstaConfirmation.u.monitorStart.monitorFilter ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_CHANGE_MONITOR_FILTER_CONF: { break; } case CSTA_MONITOR_STOP_CONF: { break; } case CSTA_SNAPSHOT_CALL_CONF: { *cs += "\n snapshotData="; csPtr = makeCSTASnapshotCallDataStr( &eventBufPtr->event.cstaConfirmation.u.snapshotCall.snapshotData ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_SNAPSHOT_DEVICE: { break; } case CSTA_SNAPSHOT_DEVICE_CONF: { *cs += "\n snapshotData="; csPtr = makeCSTASnapshotDeviceDataStr( &eventBufPtr->event.cstaConfirmation.u.snapshotDevice.snapshotData ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_GETAPI_CAPS_CONF: { break; } case CSTA_GET_DEVICE_LIST_CONF: { break; } case CSTA_QUERY_CALL_MONITOR_CONF: { break; } case CSTA_ROUTE_REQUEST_EXT: { break; } case CSTA_ROUTE_USED_EXT: { break; } case CSTA_ROUTE_SELECT_INV_REQUEST: { break; } case CSTA_ROUTE_END_INV_REQUEST: { break; } default: { *cs += "\n Invalid eventType Context"; break; } } break; case CSTAUNSOLICITED: cs->Format( "CSTAUNSOLICITED: monitorCrossRefId=%d\n %s", eventBufPtr->event.cstaUnsolicited.monitorCrossRefId, csEventType->GetString() ); switch( eventBufPtr->eventHeader.eventType ) { case CSTA_CONFERENCE_CALL: { break; } case CSTA_CALL_CLEARED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.callCleared.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n clearedCall="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.callCleared.clearedCall ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_CONFERENCED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.conferenced.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.conferenced.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n primaryOldCall="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.conferenced.primaryOldCall ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n secondaryOldCall="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.conferenced.secondaryOldCall ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n addedParty="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.conferenced.addedParty ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n confController="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.conferenced.confController ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n conferenceConnections="; csPtr = makeConnectionListStr( &eventBufPtr->event.cstaUnsolicited.u.conferenced.conferenceConnections ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_CONNECTION_CLEARED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.connectionCleared.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.connectionCleared.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n droppedConnection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.connectionCleared.droppedConnection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n releasingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.connectionCleared.releasingDevice ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_DELIVERED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.delivered.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.delivered.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n connection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.delivered.connection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n alertingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.delivered.alertingDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n lastRedirectionDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.delivered.lastRedirectionDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n calledDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.delivered.calledDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n callingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.delivered.callingDevice ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_DIVERTED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.diverted.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.diverted.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n connection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.diverted.connection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n divertingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.diverted.divertingDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n newDestination="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.diverted.newDestination ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_ESTABLISHED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.established.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.established.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n establishedConnection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.established.establishedConnection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n answeringDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.established.answeringDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n lastRedirectionDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.established.lastRedirectionDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n calledDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.established.calledDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n callingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.established.callingDevice ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_FAILED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.failed.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.failed.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n failedConnection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.failed.failedConnection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n calledDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.failed.calledDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n failingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.failed.failingDevice ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_HELD: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.held.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.held.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n heldConnection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.held.heldConnection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n holdingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.held.holdingDevice ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_NETWORK_REACHED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.networkReached.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.networkReached.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n connection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.networkReached.connection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n calledDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.networkReached.calledDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n trunkUsed="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.networkReached.trunkUsed ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_ORIGINATED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.originated.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.originated.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n originatedConnection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.originated.originatedConnection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n calledDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.originated.calledDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n callingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.originated.callingDevice ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_QUEUED: { break; } case CSTA_RETRIEVED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.retrieved.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.retrieved.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n retrievedConnection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.retrieved.retrievedConnection ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n retrievingDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.retrieved.retrievingDevice ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_SERVICE_INITIATED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.serviceInitiated.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.serviceInitiated.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n initiatedConnection="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.serviceInitiated.initiatedConnection ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_TRANSFERRED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.transferred.cause ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n localConnectionInfo="; csPtr = makeLocalConnectionStateStr( eventBufPtr->event.cstaUnsolicited.u.transferred.localConnectionInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n primaryOldCall="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.transferred.primaryOldCall ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n secondaryOldCall="; csPtr = makeConnectionIDStr( &eventBufPtr->event.cstaUnsolicited.u.transferred.secondaryOldCall ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n transferredDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.transferred.transferredDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n transferringDevice="; csPtr = makeExtendedDeviceIDStr( &eventBufPtr->event.cstaUnsolicited.u.transferred.transferringDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n transferredConnections="; csPtr = makeConnectionListStr( &eventBufPtr->event.cstaUnsolicited.u.transferred.transferredConnections ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_CALL_INFORMATION: { break; } case CSTA_DO_NOT_DISTURB: { break; } case CSTA_FORWARDING: { break; } case CSTA_MESSAGE_WAITING: { break; } case CSTA_LOGGED_ON: { break; } case CSTA_LOGGED_OFF: { break; } case CSTA_NOT_READY: { break; } case CSTA_READY: { break; } case CSTA_WORK_NOT_READY: { break; } case CSTA_WORK_READY: { break; } case CSTA_ROUTE_REGISTER_ABORT: { break; } case CSTA_ROUTE_REQUEST: { break; } case CSTA_ROUTE_SELECT_REQUEST: { break; } case CSTA_RE_ROUTE_REQUEST: { break; } case CSTA_ROUTE_USED: { break; } case CSTA_ROUTE_END: { break; } case CSTA_ROUTE_END_REQUEST: { break; } case CSTA_PRIVATE: { break; } case CSTA_PRIVATE_STATUS: { break; } case CSTA_SEND_PRIVATE: { break; } case CSTA_BACK_IN_SERVICE: { break; } case CSTA_OUT_OF_SERVICE: { break; } case CSTA_SYS_STAT: { break; } case CSTA_SYS_STAT_ENDED: { break; } case CSTA_SYS_STAT_EVENT_SEND: { break; } case CSTA_MONITOR_DEVICE: { break; } case CSTA_MONITOR_CALL: { break; } case CSTA_MONITOR_CALLS_VIA_DEVICE: { break; } case CSTA_MONITOR_ENDED: { *cs += "\n cause="; csPtr = makeCSTAEventCauseStr( eventBufPtr->event.cstaUnsolicited.u.monitorEnded.cause ); *cs += csPtr->GetString(); delete csPtr; break; } case CSTA_ROUTE_REQUEST_EXT: { break; } case CSTA_ROUTE_USED_EXT: { break; } case CSTA_ROUTE_SELECT_INV_REQUEST: { break; } case CSTA_ROUTE_END_INV_REQUEST: { break; } default: { *cs += "\n Invalid eventType Context"; break; } } break; default: csPtr = new CString; csPtr->Format( "unknown eventClass=%d:\n %s", eventBufPtr->eventHeader.eventClass, csEventType->GetString() ); *cs += csPtr->GetString(); delete csPtr; break; } csPtr = makeATTEventStr( attEvent ); *cs += csPtr->GetString(); delete csPtr; DBG1_OUT( func, "%s", cs->GetString() ); delete cs; delete csEventType; } CString * makeACSEventTypeStr( EventType_t eventType ) { CString *cs = new CString; switch ( eventType ) { case ACS_OPEN_STREAM: *cs = "ACS_OPEN_STREAM"; break; case ACS_OPEN_STREAM_CONF: *cs = "ACS_OPEN_STREAM_CONF"; break; case ACS_CLOSE_STREAM: *cs = "ACS_CLOSE_STREAM"; break; case ACS_CLOSE_STREAM_CONF: *cs = "ACS_CLOSE_STREAM_CONF"; break; case ACS_ABORT_STREAM: *cs = "ACS_ABORT_STREAM"; break; case ACS_UNIVERSAL_FAILURE_CONF: *cs = "ACS_UNIVERSAL_FAILURE_CONF"; break; case ACS_UNIVERSAL_FAILURE: *cs = "ACS_UNIVERSAL_FAILURE"; break; case ACS_KEY_REQUEST: *cs = "ACS_KEY_REQUEST"; break; case ACS_KEY_REPLY: *cs = "ACS_KEY_REPLY"; break; case ACS_NAME_SRV_REQUEST: *cs = "ACS_NAME_SRV_REQUEST"; break; case ACS_NAME_SRV_REPLY: *cs = "ACS_NAME_SRV_REPLY"; break; case ACS_AUTH_REPLY: *cs = "ACS_AUTH_REPLY"; break; case ACS_AUTH_REPLY_TWO: *cs = "ACS_AUTH_REPLY_TWO"; break; default: cs->Format( "ACSeventType=%d", eventType ); break; } return cs; } CString * makeCSTAEventTypeStr( EventType_t eventType ) { CString *cs = new CString; switch ( eventType ) { case CSTA_ALTERNATE_CALL: *cs = "CSTA_ALTERNATE_CALL"; break; case CSTA_ALTERNATE_CALL_CONF: *cs = "CSTA_ALTERNATE_CALL_CONF"; break; case CSTA_ANSWER_CALL: *cs = "CSTA_ANSWER_CALL"; break; case CSTA_ANSWER_CALL_CONF: *cs = "CSTA_ANSWER_CALL_CONF"; break; case CSTA_BACK_IN_SERVICE: *cs = "CSTA_BACK_IN_SERVICE"; break; case CSTA_CALL_CLEARED: *cs = "CSTA_CALL_CLEARED"; break; case CSTA_CALL_COMPLETION: *cs = "CSTA_CALL_COMPLETION"; break; case CSTA_CALL_COMPLETION_CONF: *cs = "CSTA_CALL_COMPLETION_CONF"; break; case CSTA_CALL_INFORMATION: *cs = "CSTA_CALL_INFORMATION"; break; case CSTA_CHANGE_MONITOR_FILTER: *cs = "CSTA_CHANGE_MONITOR_FILTER"; break; case CSTA_CHANGE_MONITOR_FILTER_CONF: *cs = "CSTA_CHANGE_MONITOR_FILTER_CONF"; break; case CSTA_CHANGE_SYS_STAT_FILTER: *cs = "CSTA_CHANGE_SYS_STAT_FILTER"; break; case CSTA_CHANGE_SYS_STAT_FILTER_CONF: *cs = "CSTA_CHANGE_SYS_STAT_FILTER_CONF"; break; case CSTA_CLEAR_CALL: *cs = "CSTA_CLEAR_CALL"; break; case CSTA_CLEAR_CALL_CONF: *cs = "CSTA_CLEAR_CALL_CONF"; break; case CSTA_CLEAR_CONNECTION: *cs = "CSTA_CLEAR_CONNECTION"; break; case CSTA_CLEAR_CONNECTION_CONF: *cs = "CSTA_CLEAR_CONNECTION_CONF"; break; case CSTA_CONFERENCED: *cs = "CSTA_CONFERENCED"; break; case CSTA_CONFERENCE_CALL: *cs = "CSTA_CONFERENCE_CALL"; break; case CSTA_CONFERENCE_CALL_CONF: *cs = "CSTA_CONFERENCE_CALL_CONF"; break; case CSTA_CONNECTION_CLEARED: *cs = "CSTA_CONNECTION_CLEARED"; break; case CSTA_CONSULTATION_CALL: *cs = "CSTA_CONSULTATION_CALL"; break; case CSTA_CONSULTATION_CALL_CONF: *cs = "CSTA_CONSULTATION_CALL_CONF"; break; case CSTA_DEFLECT_CALL: *cs = "CSTA_DEFLECT_CALL"; break; case CSTA_DEFLECT_CALL_CONF: *cs = "CSTA_DEFLECT_CALL_CONF"; break; case CSTA_DELIVERED: *cs = "CSTA_DELIVERED"; break; case CSTA_DIVERTED: *cs = "CSTA_DIVERTED"; break; case CSTA_DO_NOT_DISTURB: *cs = "CSTA_DO_NOT_DISTURB"; break; case CSTA_ESCAPE_SVC: *cs = "CSTA_ESCAPE_SVC"; break; case CSTA_ESCAPE_SVC_CONF: *cs = "CSTA_ESCAPE_SVC_CONF"; break; case CSTA_ESCAPE_SVC_REQ: *cs = "CSTA_ESCAPE_SVC_REQ"; break; case CSTA_ESCAPE_SVC_REQ_CONF: *cs = "CSTA_ESCAPE_SVC_REQ_CONF"; break; case CSTA_ESTABLISHED: *cs = "CSTA_ESTABLISHED"; break; case CSTA_FAILED: *cs = "CSTA_FAILED"; break; case CSTA_FORWARDING: *cs = "CSTA_FORWARDING"; break; case CSTA_GETAPI_CAPS: *cs = "CSTA_GETAPI_CAPS"; break; case CSTA_GETAPI_CAPS_CONF: *cs = "CSTA_GETAPI_CAPS_CONF"; break; case CSTA_GET_DEVICE_LIST: *cs = "CSTA_GET_DEVICE_LIST"; break; case CSTA_GET_DEVICE_LIST_CONF: *cs = "CSTA_GET_DEVICE_LIST_CONF"; break; case CSTA_GROUP_PICKUP_CALL: *cs = "CSTA_GROUP_PICKUP_CALL"; break; case CSTA_GROUP_PICKUP_CALL_CONF: *cs = "CSTA_GROUP_PICKUP_CALL_CONF"; break; case CSTA_HELD: *cs = "CSTA_HELD"; break; case CSTA_HOLD_CALL: *cs = "CSTA_HOLD_CALL"; break; case CSTA_HOLD_CALL_CONF: *cs = "CSTA_HOLD_CALL_CONF"; break; case CSTA_LOGGED_OFF: *cs = "CSTA_LOGGED_OFF"; break; case CSTA_LOGGED_ON: *cs = "CSTA_LOGGED_ON"; break; case CSTA_MAKE_CALL: *cs = "CSTA_MAKE_CALL"; break; case CSTA_MAKE_CALL_CONF: *cs = "CSTA_MAKE_CALL_CONF"; break; case CSTA_MAKE_PREDICTIVE_CALL: *cs = "CSTA_MAKE_PREDICTIVE_CALL"; break; case CSTA_MAKE_PREDICTIVE_CALL_CONF: *cs = "CSTA_MAKE_PREDICTIVE_CALL_CONF"; break; case CSTA_MESSAGE_WAITING: *cs = "CSTA_MESSAGE_WAITING"; break; case CSTA_MONITOR_CALL: *cs = "CSTA_MONITOR_CALL"; break; case CSTA_MONITOR_CALLS_VIA_DEVICE: *cs = "CSTA_MONITOR_CALLS_VIA_DEVICE"; break; case CSTA_MONITOR_CONF: *cs = "CSTA_MONITOR_CONF"; break; case CSTA_MONITOR_DEVICE: *cs = "CSTA_MONITOR_DEVICE"; break; case CSTA_MONITOR_ENDED: *cs = "CSTA_MONITOR_ENDED"; break; case CSTA_MONITOR_STOP: *cs = "CSTA_MONITOR_STOP"; break; case CSTA_MONITOR_STOP_CONF: *cs = "CSTA_MONITOR_STOP_CONF"; break; case CSTA_NETWORK_REACHED: *cs = "CSTA_NETWORK_REACHED"; break; case CSTA_NOT_READY: *cs = "CSTA_NOT_READY"; break; case CSTA_ORIGINATED: *cs = "CSTA_ORIGINATED"; break; case CSTA_OUT_OF_SERVICE: *cs = "CSTA_OUT_OF_SERVICE"; break; case CSTA_PICKUP_CALL: *cs = "CSTA_PICKUP_CALL"; break; case CSTA_PICKUP_CALL_CONF: *cs = "CSTA_PICKUP_CALL_CONF"; break; case CSTA_PRIVATE: *cs = "CSTA_PRIVATE"; break; case CSTA_PRIVATE_STATUS: *cs = "CSTA_PRIVATE_STATUS"; break; case CSTA_QUERY_AGENT_STATE: *cs = "CSTA_QUERY_AGENT_STATE"; break; case CSTA_QUERY_AGENT_STATE_CONF: *cs = "CSTA_QUERY_AGENT_STATE_CONF"; break; case CSTA_QUERY_CALL_MONITOR: *cs = "CSTA_QUERY_CALL_MONITOR"; break; case CSTA_QUERY_CALL_MONITOR_CONF: *cs = "CSTA_QUERY_CALL_MONITOR_CONF"; break; case CSTA_QUERY_DEVICE_INFO: *cs = "CSTA_QUERY_DEVICE_INFO"; break; case CSTA_QUERY_DEVICE_INFO_CONF: *cs = "CSTA_QUERY_DEVICE_INFO_CONF"; break; case CSTA_QUERY_DND: *cs = "CSTA_QUERY_DND"; break; case CSTA_QUERY_DND_CONF: *cs = "CSTA_QUERY_DND_CONF"; break; case CSTA_QUERY_FWD: *cs = "CSTA_QUERY_FWD"; break; case CSTA_QUERY_FWD_CONF: *cs = "CSTA_QUERY_FWD_CONF"; break; case CSTA_QUERY_LAST_NUMBER: *cs = "CSTA_QUERY_LAST_NUMBER"; break; case CSTA_QUERY_LAST_NUMBER_CONF: *cs = "CSTA_QUERY_LAST_NUMBER_CONF"; break; case CSTA_QUERY_MWI: *cs = "CSTA_QUERY_MWI"; break; case CSTA_QUERY_MWI_CONF: *cs = "CSTA_QUERY_MWI_CONF"; break; case CSTA_QUEUED: *cs = "CSTA_QUEUED"; break; case CSTA_READY: *cs = "CSTA_READY"; break; case CSTA_RECONNECT_CALL: *cs = "CSTA_RECONNECT_CALL"; break; case CSTA_RECONNECT_CALL_CONF: *cs = "CSTA_RECONNECT_CALL_CONF"; break; case CSTA_REQ_SYS_STAT: *cs = "CSTA_REQ_SYS_STAT"; break; case CSTA_REQ_SYS_STAT_CONF: *cs = "CSTA_REQ_SYS_STAT_CONF"; break; case CSTA_RETRIEVED: *cs = "CSTA_RETRIEVED"; break; case CSTA_RETRIEVE_CALL: *cs = "CSTA_RETRIEVE_CALL"; break; case CSTA_RETRIEVE_CALL_CONF: *cs = "CSTA_RETRIEVE_CALL_CONF"; break; case CSTA_RE_ROUTE_REQUEST: *cs = "CSTA_RE_ROUTE_REQUEST"; break; case CSTA_ROUTE_END: *cs = "CSTA_ROUTE_END"; break; case CSTA_ROUTE_END_INV_REQUEST: *cs = "CSTA_ROUTE_END_INV_REQUEST"; break; case CSTA_ROUTE_END_REQUEST: *cs = "CSTA_ROUTE_END_REQUEST"; break; case CSTA_ROUTE_REGISTER_ABORT: *cs = "CSTA_ROUTE_REGISTER_ABORT"; break; case CSTA_ROUTE_REGISTER_CANCEL: *cs = "CSTA_ROUTE_REGISTER_CANCEL"; break; case CSTA_ROUTE_REGISTER_CANCEL_CONF: *cs = "CSTA_ROUTE_REGISTER_CANCEL_CONF"; break; case CSTA_ROUTE_REGISTER_REQ: *cs = "CSTA_ROUTE_REGISTER_REQ"; break; case CSTA_ROUTE_REGISTER_REQ_CONF: *cs = "CSTA_ROUTE_REGISTER_REQ_CONF"; break; case CSTA_ROUTE_REQUEST: *cs = "CSTA_ROUTE_REQUEST"; break; case CSTA_ROUTE_REQUEST_EXT: *cs = "CSTA_ROUTE_REQUEST_EXT"; break; case CSTA_ROUTE_SELECT_INV_REQUEST: *cs = "CSTA_ROUTE_SELECT_INV_REQUEST"; break; case CSTA_ROUTE_SELECT_REQUEST: *cs = "CSTA_ROUTE_SELECT_REQUEST"; break; case CSTA_ROUTE_USED: *cs = "CSTA_ROUTE_USED"; break; case CSTA_ROUTE_USED_EXT: *cs = "CSTA_ROUTE_USED_EXT"; break; case CSTA_SEND_PRIVATE: *cs = "CSTA_SEND_PRIVATE"; break; case CSTA_SERVICE_INITIATED: *cs = "CSTA_SERVICE_INITIATED"; break; case CSTA_SET_AGENT_STATE: *cs = "CSTA_SET_AGENT_STATE"; break; case CSTA_SET_AGENT_STATE_CONF: *cs = "CSTA_SET_AGENT_STATE_CONF"; break; case CSTA_SET_DND: *cs = "CSTA_SET_DND"; break; case CSTA_SET_DND_CONF: *cs = "CSTA_SET_DND_CONF"; break; case CSTA_SET_FWD: *cs = "CSTA_SET_FWD"; break; case CSTA_SET_FWD_CONF: *cs = "CSTA_SET_FWD_CONF"; break; case CSTA_SET_MWI: *cs = "CSTA_SET_MWI"; break; case CSTA_SET_MWI_CONF: *cs = "CSTA_SET_MWI_CONF"; break; case CSTA_SNAPSHOT_CALL: *cs = "CSTA_SNAPSHOT_CALL"; break; case CSTA_SNAPSHOT_CALL_CONF: *cs = "CSTA_SNAPSHOT_CALL_CONF"; break; case CSTA_SNAPSHOT_DEVICE: *cs = "CSTA_SNAPSHOT_DEVICE"; break; case CSTA_SNAPSHOT_DEVICE_CONF: *cs = "CSTA_SNAPSHOT_DEVICE_CONF"; break; case CSTA_SYS_STAT: *cs = "CSTA_SYS_STAT"; break; case CSTA_SYS_STAT_ENDED: *cs = "CSTA_SYS_STAT_ENDED"; break; case CSTA_SYS_STAT_EVENT_SEND: *cs = "CSTA_SYS_STAT_EVENT_SEND"; break; case CSTA_SYS_STAT_REQ: *cs = "CSTA_SYS_STAT_REQ"; break; case CSTA_SYS_STAT_REQ_CONF: *cs = "CSTA_SYS_STAT_REQ_CONF"; break; case CSTA_SYS_STAT_START: *cs = "CSTA_SYS_STAT_START"; break; case CSTA_SYS_STAT_START_CONF: *cs = "CSTA_SYS_STAT_START_CONF"; break; case CSTA_SYS_STAT_STOP: *cs = "CSTA_SYS_STAT_STOP"; break; case CSTA_SYS_STAT_STOP_CONF: *cs = "CSTA_SYS_STAT_STOP_CONF"; break; case CSTA_TRANSFERRED: *cs = "CSTA_TRANSFERRED"; break; case CSTA_TRANSFER_CALL: *cs = "CSTA_TRANSFER_CALL"; break; case CSTA_TRANSFER_CALL_CONF: *cs = "CSTA_TRANSFER_CALL_CONF"; break; case CSTA_UNIVERSAL_FAILURE_CONF: *cs = "CSTA_UNIVERSAL_FAILURE_CONF"; break; case CSTA_WORK_NOT_READY: *cs = "CSTA_WORK_NOT_READY"; break; case CSTA_WORK_READY: *cs = "CSTA_WORK_READY"; break; default: cs->Format( "CSTAeventType=%d", eventType ); break; } return cs; } CString * makeACSUFStr( ACSUniversalFailure_t error ) { CString *cs = new CString; switch( error ) { case TSERVER_STREAM_FAILED: *cs = "TSERVER_STREAM_FAILED"; break; case TSERVER_NO_THREAD: *cs = "TSERVER_NO_THREAD"; break; case TSERVER_BAD_DRIVER_ID: *cs = "TSERVER_BAD_DRIVER_ID"; break; case TSERVER_DEAD_DRIVER: *cs = "TSERVER_DEAD_DRIVER"; break; case TSERVER_MESSAGE_HIGH_WATER_MARK: *cs = "TSERVER_MESSAGE_HIGH_WATER_MARK"; break; case TSERVER_FREE_BUFFER_FAILED: *cs = "TSERVER_FREE_BUFFER_FAILED"; break; case TSERVER_SEND_TO_DRIVER: *cs = "TSERVER_SEND_TO_DRIVER"; break; case TSERVER_RECEIVE_FROM_DRIVER: *cs = "TSERVER_RECEIVE_FROM_DRIVER"; break; case TSERVER_REGISTRATION_FAILED: *cs = "TSERVER_REGISTRATION_FAILED"; break; case TSERVER_SPX_FAILED: *cs = "TSERVER_SPX_FAILED"; break; case TSERVER_TRACE: *cs = "TSERVER_TRACE"; break; case TSERVER_NO_MEMORY: *cs = "TSERVER_NO_MEMORY"; break; case TSERVER_ENCODE_FAILED: *cs = "TSERVER_ENCODE_FAILED"; break; case TSERVER_DECODE_FAILED: *cs = "TSERVER_DECODE_FAILED"; break; case TSERVER_BAD_CONNECTION: *cs = "TSERVER_BAD_CONNECTION"; break; case TSERVER_BAD_PDU: *cs = "TSERVER_BAD_PDU"; break; case TSERVER_NO_VERSION: *cs = "TSERVER_NO_VERSION"; break; case TSERVER_ECB_MAX_EXCEEDED: *cs = "TSERVER_ECB_MAX_EXCEEDED"; break; case TSERVER_NO_ECBS: *cs = "TSERVER_NO_ECBS"; break; case TSERVER_NO_SDB: *cs = "TSERVER_NO_SDB"; break; case TSERVER_NO_SDB_CHECK_NEEDED: *cs = "TSERVER_NO_SDB_CHECK_NEEDED"; break; case TSERVER_SDB_CHECK_NEEDED: *cs = "TSERVER_SDB_CHECK_NEEDED"; break; case TSERVER_BAD_SDB_LEVEL: *cs = "TSERVER_BAD_SDB_LEVEL"; break; case TSERVER_BAD_SERVERID: *cs = "TSERVER_BAD_SERVERID"; break; case TSERVER_BAD_STREAM_TYPE: *cs = "TSERVER_BAD_STREAM_TYPE"; break; case TSERVER_BAD_PASSWORD_OR_LOGIN: *cs = "TSERVER_BAD_PASSWORD_OR_LOGIN"; break; case TSERVER_NO_USER_RECORD: *cs = "TSERVER_NO_USER_RECORD"; break; case TSERVER_NO_DEVICE_RECORD: *cs = "TSERVER_NO_DEVICE_RECORD"; break; case TSERVER_DEVICE_NOT_ON_LIST: *cs = "TSERVER_DEVICE_NOT_ON_LIST"; break; case TSERVER_USERS_RESTRICTED_HOME: *cs = "TSERVER_USERS_RESTRICTED_HOME"; break; case TSERVER_NO_AWAYPERMISSION: *cs = "TSERVER_NO_AWAYPERMISSION"; break; case TSERVER_NO_HOMEPERMISSION: *cs = "TSERVER_NO_HOMEPERMISSION"; break; case TSERVER_NO_AWAY_WORKTOP: *cs = "TSERVER_NO_AWAY_WORKTOP"; break; case TSERVER_BAD_DEVICE_RECORD: *cs = "TSERVER_BAD_DEVICE_RECORD"; break; case TSERVER_DEVICE_NOT_SUPPORTED: *cs = "TSERVER_DEVICE_NOT_SUPPORTED"; break; case TSERVER_INSUFFICIENT_PERMISSION: *cs = "TSERVER_INSUFFICIENT_PERMISSION"; break; case TSERVER_NO_RESOURCE_TAG: *cs = "TSERVER_NO_RESOURCE_TAG"; break; case TSERVER_INVALID_MESSAGE: *cs = "TSERVER_INVALID_MESSAGE"; break; case TSERVER_EXCEPTION_LIST: *cs = "TSERVER_EXCEPTION_LIST"; break; case TSERVER_NOT_ON_OAM_LIST: *cs = "TSERVER_NOT_ON_OAM_LIST"; break; case TSERVER_PBX_ID_NOT_IN_SDB: *cs = "TSERVER_PBX_ID_NOT_IN_SDB"; break; case TSERVER_USER_LICENSES_EXCEEDED: *cs = "TSERVER_USER_LICENSES_EXCEEDED"; break; case TSERVER_OAM_DROP_CONNECTION: *cs = "TSERVER_OAM_DROP_CONNECTION"; break; case TSERVER_NO_VERSION_RECORD: *cs = "TSERVER_NO_VERSION_RECORD"; break; case TSERVER_OLD_VERSION_RECORD: *cs = "TSERVER_OLD_VERSION_RECORD"; break; case TSERVER_BAD_PACKET: *cs = "TSERVER_BAD_PACKET"; break; case TSERVER_OPEN_FAILED: *cs = "TSERVER_OPEN_FAILED"; break; case TSERVER_OAM_IN_USE: *cs = "TSERVER_OAM_IN_USE"; break; case TSERVER_DEVICE_NOT_ON_HOME_LIST: *cs = "TSERVER_DEVICE_NOT_ON_HOME_LIST"; break; case TSERVER_DEVICE_NOT_ON_CALL_CONTROL_LIST: *cs = "TSERVER_DEVICE_NOT_ON_CALL_CONTROL_LIST"; break; case TSERVER_DEVICE_NOT_ON_AWAY_LIST: *cs = "TSERVER_DEVICE_NOT_ON_AWAY_LIST"; break; case TSERVER_DEVICE_NOT_ON_ROUTE_LIST: *cs = "TSERVER_DEVICE_NOT_ON_ROUTE_LIST"; break; case TSERVER_DEVICE_NOT_ON_MONITOR_DEVICE_LIST: *cs = "TSERVER_DEVICE_NOT_ON_MONITOR_DEVICE_LIST"; break; case TSERVER_DEVICE_NOT_ON_MONITOR_CALL_DEVICE_LIST: *cs = "TSERVER_DEVICE_NOT_ON_MONITOR_CALL_DEVICE_LIST"; break; case TSERVER_NO_CALL_CALL_MONITOR_PERMISSION: *cs = "TSERVER_NO_CALL_CALL_MONITOR_PERMISSION"; break; case TSERVER_HOME_DEVICE_LIST_EMPTY: *cs = "TSERVER_HOME_DEVICE_LIST_EMPTY"; break; case TSERVER_CALL_CONTROL_LIST_EMPTY: *cs = "TSERVER_CALL_CONTROL_LIST_EMPTY"; break; case TSERVER_AWAY_LIST_EMPTY: *cs = "TSERVER_AWAY_LIST_EMPTY"; break; case TSERVER_ROUTE_LIST_EMPTY: *cs = "TSERVER_ROUTE_LIST_EMPTY"; break; case TSERVER_MONITOR_DEVICE_LIST_EMPTY: *cs = "TSERVER_MONITOR_DEVICE_LIST_EMPTY"; break; case TSERVER_MONITOR_CALL_DEVICE_LIST_EMPTY: *cs = "TSERVER_MONITOR_CALL_DEVICE_LIST_EMPTY"; break; case TSERVER_USER_AT_HOME_WORKTOP: *cs = "TSERVER_USER_AT_HOME_WORKTOP"; break; case TSERVER_DEVICE_LIST_EMPTY: *cs = "TSERVER_DEVICE_LIST_EMPTY"; break; case TSERVER_BAD_GET_DEVICE_LEVEL: *cs = "TSERVER_BAD_GET_DEVICE_LEVEL"; break; case TSERVER_DRIVER_UNREGISTERED: *cs = "TSERVER_DRIVER_UNREGISTERED"; break; case TSERVER_NO_ACS_STREAM: *cs = "TSERVER_NO_ACS_STREAM"; break; case TSERVER_DROP_OAM: *cs = "TSERVER_DROP_OAM"; break; case TSERVER_ECB_TIMEOUT: *cs = "TSERVER_ECB_TIMEOUT"; break; case TSERVER_BAD_ECB: *cs = "TSERVER_BAD_ECB"; break; case TSERVER_ADVERTISE_FAILED: *cs = "TSERVER_ADVERTISE_FAILED"; break; case TSERVER_NETWARE_FAILURE: *cs = "TSERVER_NETWARE_FAILURE"; break; case TSERVER_TDI_QUEUE_FAULT: *cs = "TSERVER_TDI_QUEUE_FAULT"; break; case TSERVER_DRIVER_CONGESTION: *cs = "TSERVER_DRIVER_CONGESTION"; break; case TSERVER_NO_TDI_BUFFERS: *cs = "TSERVER_NO_TDI_BUFFERS"; break; case TSERVER_OLD_INVOKEID: *cs = "TSERVER_OLD_INVOKEID"; break; case TSERVER_HWMARK_TO_LARGE: *cs = "TSERVER_HWMARK_TO_LARGE"; break; case TSERVER_SET_ECB_TO_LOW: *cs = "TSERVER_SET_ECB_TO_LOW"; break; case TSERVER_NO_RECORD_IN_FILE: *cs = "TSERVER_NO_RECORD_IN_FILE"; break; case TSERVER_ECB_OVERDUE: *cs = "TSERVER_ECB_OVERDUE"; break; case TSERVER_BAD_PW_ENCRYPTION: *cs = "TSERVER_BAD_PW_ENCRYPTION"; break; case TSERVER_BAD_TSERV_PROTOCOL: *cs = "TSERVER_BAD_TSERV_PROTOCOL"; break; case TSERVER_BAD_DRIVER_PROTOCOL: *cs = "TSERVER_BAD_DRIVER_PROTOCOL"; break; case TSERVER_BAD_TRANSPORT_TYPE: *cs = "TSERVER_BAD_TRANSPORT_TYPE"; break; case TSERVER_PDU_VERSION_MISMATCH: *cs = "TSERVER_PDU_VERSION_MISMATCH"; break; case TSERVER_VERSION_MISMATCH: *cs = "TSERVER_VERSION_MISMATCH"; break; case TSERVER_LICENSE_MISMATCH: *cs = "TSERVER_LICENSE_MISMATCH"; break; case TSERVER_BAD_ATTRIBUTE_LIST: *cs = "TSERVER_BAD_ATTRIBUTE_LIST"; break; case TSERVER_BAD_TLIST_TYPE: *cs = "TSERVER_BAD_TLIST_TYPE"; break; case TSERVER_BAD_PROTOCOL_FORMAT: *cs = "TSERVER_BAD_PROTOCOL_FORMAT"; break; case TSERVER_OLD_TSLIB: *cs = "TSERVER_OLD_TSLIB"; break; case TSERVER_BAD_LICENSE_FILE: *cs = "TSERVER_BAD_LICENSE_FILE"; break; case TSERVER_NO_PATCHES: *cs = "TSERVER_NO_PATCHES"; break; case TSERVER_SYSTEM_ERROR: *cs = "TSERVER_SYSTEM_ERROR"; break; case TSERVER_OAM_LIST_EMPTY: *cs = "TSERVER_OAM_LIST_EMPTY"; break; case TSERVER_TCP_FAILED: *cs = "TSERVER_TCP_FAILED"; break; case TSERVER_SPX_DISABLED: *cs = "TSERVER_SPX_DISABLED"; break; case TSERVER_TCP_DISABLED: *cs = "TSERVER_TCP_DISABLED"; break; case TSERVER_REQUIRED_MODULES_NOT_LOADED: *cs = "TSERVER_REQUIRED_MODULES_NOT_LOADED"; break; case TSERVER_TRANSPORT_IN_USE_BY_OAM: *cs = "TSERVER_TRANSPORT_IN_USE_BY_OAM"; break; case TSERVER_NO_NDS_OAM_PERMISSION: *cs = "TSERVER_NO_NDS_OAM_PERMISSION"; break; case TSERVER_OPEN_SDB_LOG_FAILED: *cs = "TSERVER_OPEN_SDB_LOG_FAILED"; break; case TSERVER_INVALID_LOG_SIZE: *cs = "TSERVER_INVALID_LOG_SIZE"; break; case TSERVER_WRITE_SDB_LOG_FAILED: *cs = "TSERVER_WRITE_SDB_LOG_FAILED"; break; case TSERVER_NT_FAILURE: *cs = "TSERVER_NT_FAILURE"; break; case TSERVER_LOAD_LIB_FAILED: *cs = "TSERVER_LOAD_LIB_FAILED"; break; case TSERVER_INVALID_DRIVER: *cs = "TSERVER_INVALID_DRIVER"; break; case TSERVER_REGISTRY_ERROR: *cs = "TSERVER_REGISTRY_ERROR"; break; case TSERVER_DUPLICATE_ENTRY: *cs = "TSERVER_DUPLICATE_ENTRY"; break; case TSERVER_DRIVER_LOADED: *cs = "TSERVER_DRIVER_LOADED"; break; case TSERVER_DRIVER_NOT_LOADED: *cs = "TSERVER_DRIVER_NOT_LOADED"; break; case TSERVER_NO_LOGON_PERMISSION: *cs = "TSERVER_NO_LOGON_PERMISSION"; break; case TSERVER_ACCOUNT_DISABLED: *cs = "TSERVER_ACCOUNT_DISABLED"; break; case TSERVER_NO_NETLOGON: *cs = "TSERVER_NO_NETLOGON"; break; case TSERVER_ACCT_RESTRICTED: *cs = "TSERVER_ACCT_RESTRICTED"; break; case TSERVER_INVALID_LOGON_TIME: *cs = "TSERVER_INVALID_LOGON_TIME"; break; case TSERVER_INVALID_WORKSTATION: *cs = "TSERVER_INVALID_WORKSTATION"; break; case TSERVER_ACCT_LOCKED_OUT: *cs = "TSERVER_ACCT_LOCKED_OUT"; break; case TSERVER_PASSWORD_EXPIRED: *cs = "TSERVER_PASSWORD_EXPIRED"; break; case DRIVER_DUPLICATE_ACSHANDLE: *cs = "DRIVER_DUPLICATE_ACSHANDLE"; break; case DRIVER_INVALID_ACS_REQUEST: *cs = "DRIVER_INVALID_ACS_REQUEST"; break; case DRIVER_ACS_HANDLE_REJECTION: *cs = "DRIVER_ACS_HANDLE_REJECTION"; break; case DRIVER_INVALID_CLASS_REJECTION: *cs = "DRIVER_INVALID_CLASS_REJECTION"; break; case DRIVER_GENERIC_REJECTION: *cs = "DRIVER_GENERIC_REJECTION"; break; case DRIVER_RESOURCE_LIMITATION: *cs = "DRIVER_RESOURCE_LIMITATION"; break; case DRIVER_ACSHANDLE_TERMINATION: *cs = "DRIVER_ACSHANDLE_TERMINATION"; break; case DRIVER_LINK_UNAVAILABLE: *cs = "DRIVER_LINK_UNAVAILABLE"; break; case DRIVER_OAM_IN_USE: *cs = "DRIVER_OAM_IN_USE"; break; default: cs->Format( "error=%d", error ); break; } return cs; } CString * makeLocalConnectionStateStr( LocalConnectionState_t localConnectionState ) { CString *cs = new CString; switch( localConnectionState ) { case CS_NONE: *cs = "None"; break; case CS_NULL: *cs = "Null"; break; case CS_INITIATE: *cs = "Initiated"; break; case CS_ALERTING: *cs = "Alerting"; break; case CS_CONNECT: *cs = "Connected"; break; case CS_HOLD: *cs = "Held"; break; case CS_QUEUED: *cs = "Queued"; break; case CS_FAIL: *cs = "Failed"; break; default: cs->Format( "%d", localConnectionState ); break; } return cs; } CString * makeDeviceIDStatusStr( DeviceIDStatus_t deviceIDStatus ) { CString *cs = new CString; switch( deviceIDStatus ) { case ID_PROVIDED: *cs = "ID_PROVIDED"; break; case ID_NOT_KNOWN: *cs = "ID_NOT_KNOWN"; break; case ID_NOT_REQUIRED: *cs = "ID_NOT_REQUIRED"; break; default: cs->Format( "%d", deviceIDStatus ); break; } return cs; } CString * makeConnectionStr( Connection_t *connection ) { CString *cs = new CString; CString *csCID = makeConnectionIDStr( &connection->party ); CString *csEDID = makeExtendedDeviceIDStr( &connection->staticDevice ); cs->Format( "{ party=%s staticDevice=%s }", csCID->GetString(), csEDID->GetString() ); delete csCID; delete csEDID; return cs; } CString * makeConnectionListStr( ConnectionList_t *connectionList ) { CString *cs = new CString; cs->Format( "%d", connectionList->count ); for ( int i=0; i count; i++ ) { CString *csC = makeConnectionStr( &connectionList->connection[i] ); CString tmp_cs; tmp_cs.Format( "\n conn%d=%s", i, csC->GetString() ); delete csC; *cs += tmp_cs; } return cs; } CString * makeExtendedDeviceIDStr( ExtendedDeviceID_t *extendedDeviceID ) { CString *cs = new CString; CString *csDIDT = makeDeviceIDTypeStr( extendedDeviceID->deviceIDType ); CString *csDIDS = makeDeviceIDStatusStr( extendedDeviceID->deviceIDStatus ); cs->Format( "{ deviceID='%s' deviceIDType=%s deviceIDStatus=%s }", extendedDeviceID->deviceID, csDIDT->GetString(), csDIDS->GetString() ); delete csDIDT; delete csDIDS; return cs; } CString * makeDeviceIDTypeStr( DeviceIDType_t deviceIDType ) { CString *cs = new CString; switch( deviceIDType ) { case DEVICE_IDENTIFIER: *cs = "DEVICE_IDENTIFIER"; break; case IMPLICIT_PUBLIC: *cs = "IMPLICIT_PUBLIC"; break; case EXPLICIT_PUBLIC_UNKNOWN: *cs = "EXPLICIT_PUBLIC_UNKNOWN"; break; case EXPLICIT_PUBLIC_INTERNATIONAL: *cs = "EXPLICIT_PUBLIC_INTERNATIONAL"; break; case EXPLICIT_PUBLIC_NATIONAL: *cs = "EXPLICIT_PUBLIC_NATIONAL"; break; case EXPLICIT_PUBLIC_NETWORK_SPECIFIC: *cs = "EXPLICIT_PUBLIC_NETWORK_SPECIFIC"; break; case EXPLICIT_PUBLIC_SUBSCRIBER: *cs = "EXPLICIT_PUBLIC_SUBSCRIBER"; break; case EXPLICIT_PUBLIC_ABBREVIATED: *cs = "EXPLICIT_PUBLIC_ABBREVIATED"; break; case IMPLICIT_PRIVATE: *cs = "IMPLICIT_PRIVATE"; break; case EXPLICIT_PRIVATE_UNKNOWN: *cs = "EXPLICIT_PRIVATE_UNKNOWN"; break; case EXPLICIT_PRIVATE_LEVEL3_REGIONAL_NUMBER: *cs = "EXPLICIT_PRIVATE_LEVEL3_REGIONAL_NUMBER"; break; case EXPLICIT_PRIVATE_LEVEL2_REGIONAL_NUMBER: *cs = "EXPLICIT_PRIVATE_LEVEL2_REGIONAL_NUMBER"; break; case EXPLICIT_PRIVATE_LEVEL1_REGIONAL_NUMBER: *cs = "EXPLICIT_PRIVATE_LEVEL1_REGIONAL_NUMBER"; break; case EXPLICIT_PRIVATE_PTN_SPECIFIC_NUMBER: *cs = "EXPLICIT_PRIVATE_PTN_SPECIFIC_NUMBER"; break; case EXPLICIT_PRIVATE_LOCAL_NUMBER: *cs = "EXPLICIT_PRIVATE_LOCAL_NUMBER"; break; case EXPLICIT_PRIVATE_ABBREVIATED: *cs = "EXPLICIT_PRIVATE_ABBREVIATED"; break; case OTHER_PLAN: *cs = "OTHER_PLAN"; break; case TRUNK_IDENTIFIER: *cs = "TRUNK_IDENTIFIER"; break; case TRUNK_GROUP_IDENTIFIER: *cs = "TRUNK_GROUP_IDENTIFIER"; break; default: cs->Format( "%d", deviceIDType ); break; } return cs; } CString * makeConnectionID_DeviceStr( ConnectionID_Device_t connectionID_Device ) { CString *cs = new CString; switch( connectionID_Device ) { case STATIC_ID: *cs = "Static"; break; case DYNAMIC_ID: *cs = "Dynamic"; break; default: cs->Format( "%d", connectionID_Device ); break; } return cs; } CString * makeConnectionIDStr( ConnectionID_t *connectionID ) { CString *cs = new CString; CString *csCID = makeConnectionID_DeviceStr( connectionID->devIDType ); cs->Format( "{ callID=%d deviceID='%s' devIDType=%s }", connectionID->callID, connectionID->deviceID, csCID->GetString() ); delete csCID; return cs; } CString * makeCSTACallStateStr( CSTACallState_t *cstaCallState ) { CString *cs = new CString; cs->Format( "{ %d: ", cstaCallState->count ); for ( int i=0; i count; i++ ) { CString *csLCS = makeLocalConnectionStateStr( cstaCallState->state[i] ); CString tmp_cs; tmp_cs.Format( "%s ", csLCS->GetString() ); delete csLCS; *cs += tmp_cs; } *cs += "}"; return cs; } CString * makeCSTASnapshotCallResponseInfoStr( CSTASnapshotCallResponseInfo_t *cstaSnapshotCallResponseInfo ) { CString *cs = new CString; CString *csCID = makeConnectionIDStr( &cstaSnapshotCallResponseInfo->callIdentifier ); CString *csEDID = makeExtendedDeviceIDStr( &cstaSnapshotCallResponseInfo->deviceOnCall ); CString *csLCS = makeLocalConnectionStateStr( cstaSnapshotCallResponseInfo->localConnectionState ); cs->Format( "{ callIdentifier=%s deviceOnCall=%s localConnectionState=%s }", csCID->GetString(), csEDID->GetString(), csLCS->GetString() ); delete csCID; delete csEDID; delete csLCS; return cs; } CString * makeCSTASnapshotDeviceResponseInfoStr( CSTASnapshotDeviceResponseInfo_t *cstaSnapshotDeviceResponseInfo ) { CString *cs = new CString; CString *csCID = makeConnectionIDStr( &cstaSnapshotDeviceResponseInfo->callIdentifier ); CString *csCCS = makeCSTACallStateStr( &cstaSnapshotDeviceResponseInfo->localCallState ); cs->Format( "{ callIdentifier=%s localCallState=%s }", csCID->GetString(), csCCS->GetString() ); delete csCID; delete csCCS; return cs; } CString * makeCSTASnapshotCallDataStr( CSTASnapshotCallData_t *snapshotCallData ) { CString *cs = new CString; cs->Format( "%d", snapshotCallData->count ); for ( int i=0; i count; i++ ) { CString *csCSCRI = makeCSTASnapshotCallResponseInfoStr( &snapshotCallData->info[i] ); CString tmp_cs; tmp_cs.Format( "\n snap%d=%s", i, csCSCRI->GetString() ); delete csCSCRI; *cs += tmp_cs; } return cs; } CString * makeCSTASnapshotDeviceDataStr( CSTASnapshotDeviceData_t *snapshotDeviceData ) { CString *cs = new CString; cs->Format( "%d", snapshotDeviceData->count ); for ( int i=0; i count; i++ ) { CString *csCSDRI = makeCSTASnapshotDeviceResponseInfoStr( &snapshotDeviceData->info[i] ); CString tmp_cs; tmp_cs.Format( "\n snap%d=%s", i, csCSDRI->GetString() ); delete csCSDRI; *cs += tmp_cs; } return cs; } CString * makeCSTAMonitorFilterStr( CSTAMonitorFilter_t *monitorFilter ) { CString *cs = new CString; cs->Format( "{ agent=0x%x call=0x%x feature=0x%x maintenance=0x%x privateFilter=0x%x }", monitorFilter->agent, monitorFilter->call, monitorFilter->feature, monitorFilter->maintenance, monitorFilter->privateFilter ); return cs; } CString * makeCSTAEventCauseStr( CSTAEventCause_t cause ) { CString *cs = new CString; switch( cause ) { case EC_NONE: *cs = "EC_NONE"; break; case EC_ACTIVE_MONITOR: *cs = "EC_ACTIVE_MONITOR"; break; case EC_ALTERNATE: *cs = "EC_ALTERNATE"; break; case EC_BUSY: *cs = "EC_BUSY"; break; case EC_CALL_BACK: *cs = "EC_CALL_BACK"; break; case EC_CALL_CANCELLED: *cs = "EC_CALL_CANCELLED"; break; case EC_CALL_FORWARD_ALWAYS: *cs = "EC_CALL_FORWARD_ALWAYS"; break; case EC_CALL_FORWARD_BUSY: *cs = "EC_CALL_FORWARD_BUSY"; break; case EC_CALL_FORWARD_NO_ANSWER: *cs = "EC_CALL_FORWARD_NO_ANSWER"; break; case EC_CALL_FORWARD: *cs = "EC_CALL_FORWARD"; break; case EC_CALL_NOT_ANSWERED: *cs = "EC_CALL_NOT_ANSWERED"; break; case EC_CALL_PICKUP: *cs = "EC_CALL_PICKUP"; break; case EC_CAMP_ON: *cs = "EC_CAMP_ON"; break; case EC_DEST_NOT_OBTAINABLE: *cs = "EC_DEST_NOT_OBTAINABLE"; break; case EC_DO_NOT_DISTURB: *cs = "EC_DO_NOT_DISTURB"; break; case EC_INCOMPATIBLE_DESTINATION: *cs = "EC_INCOMPATIBLE_DESTINATION"; break; case EC_INVALID_ACCOUNT_CODE: *cs = "EC_INVALID_ACCOUNT_CODE"; break; case EC_KEY_CONFERENCE: *cs = "EC_KEY_CONFERENCE"; break; case EC_LOCKOUT: *cs = "EC_LOCKOUT"; break; case EC_MAINTENANCE: *cs = "EC_MAINTENANCE"; break; case EC_NETWORK_CONGESTION: *cs = "EC_NETWORK_CONGESTION"; break; case EC_NETWORK_NOT_OBTAINABLE: *cs = "EC_NETWORK_NOT_OBTAINABLE"; break; case EC_NEW_CALL: *cs = "EC_NEW_CALL"; break; case EC_NO_AVAILABLE_AGENTS: *cs = "EC_NO_AVAILABLE_AGENTS"; break; case EC_OVERRIDE: *cs = "EC_OVERRIDE"; break; case EC_PARK: *cs = "EC_PARK"; break; case EC_OVERFLOW: *cs = "EC_OVERFLOW"; break; case EC_RECALL: *cs = "EC_RECALL"; break; case EC_REDIRECTED: *cs = "EC_REDIRECTED"; break; case EC_REORDER_TONE: *cs = "EC_REORDER_TONE"; break; case EC_RESOURCES_NOT_AVAILABLE: *cs = "EC_RESOURCES_NOT_AVAILABLE"; break; case EC_SILENT_MONITOR: *cs = "EC_SILENT_MONITOR"; break; case EC_TRANSFER: *cs = "EC_TRANSFER"; break; case EC_TRUNKS_BUSY: *cs = "EC_TRUNKS_BUSY"; break; case EC_VOICE_UNIT_INITIATOR: *cs = "EC_VOICE_UNIT_INITIATOR"; break; case EC_NETWORKSIGNAL: *cs = "EC_NETWORKSIGNAL"; break; case EC_ALERTTIMEEXPIRED: *cs = "EC_ALERTTIMEEXPIRED"; break; case EC_DESTOUTOFORDER: *cs = "EC_DESTOUTOFORDER"; break; case EC_NOTSUPPORTEDBEARERSERVICE: *cs = "EC_NOTSUPPORTEDBEARERSERVICE"; break; case EC_UNASSIGNED_NUMBER: *cs = "EC_UNASSIGNED_NUMBER"; break; case EC_INCOMPATIBLE_BEARER_SERVICE: *cs = "EC_INCOMPATIBLE_BEARER_SERVICE"; break; default: cs->Format( "%d", cause ); break; } return cs; } CString * makeCSTAUFStr( CSTAUniversalFailure_t error ) { CString *cs = new CString; switch( error ) { case GENERIC_UNSPECIFIED: *cs = "GENERIC_UNSPECIFIED"; break; case GENERIC_OPERATION: *cs = "GENERIC_OPERATION"; break; case REQUEST_INCOMPATIBLE_WITH_OBJECT: *cs = "REQUEST_INCOMPATIBLE_WITH_OBJECT"; break; case VALUE_OUT_OF_RANGE: *cs = "VALUE_OUT_OF_RANGE"; break; case OBJECT_NOT_KNOWN: *cs = "OBJECT_NOT_KNOWN"; break; case INVALID_CALLING_DEVICE: *cs = "INVALID_CALLING_DEVICE"; break; case INVALID_CALLED_DEVICE: *cs = "INVALID_CALLED_DEVICE"; break; case INVALID_FORWARDING_DESTINATION: *cs = "INVALID_FORWARDING_DESTINATION"; break; case PRIVILEGE_VIOLATION_ON_SPECIFIED_DEVICE: *cs = "PRIVILEGE_VIOLATION_ON_SPECIFIED_DEVICE"; break; case PRIVILEGE_VIOLATION_ON_CALLED_DEVICE: *cs = "PRIVILEGE_VIOLATION_ON_CALLED_DEVICE"; break; case PRIVILEGE_VIOLATION_ON_CALLING_DEVICE: *cs = "PRIVILEGE_VIOLATION_ON_CALLING_DEVICE"; break; case INVALID_CSTA_CALL_IDENTIFIER: *cs = "INVALID_CSTA_CALL_IDENTIFIER"; break; case INVALID_CSTA_DEVICE_IDENTIFIER: *cs = "INVALID_CSTA_DEVICE_IDENTIFIER"; break; case INVALID_CSTA_CONNECTION_IDENTIFIER: *cs = "INVALID_CSTA_CONNECTION_IDENTIFIER"; break; case INVALID_DESTINATION: *cs = "INVALID_DESTINATION"; break; case INVALID_FEATURE: *cs = "INVALID_FEATURE"; break; case INVALID_ALLOCATION_STATE: *cs = "INVALID_ALLOCATION_STATE"; break; case INVALID_CROSS_REF_ID: *cs = "INVALID_CROSS_REF_ID"; break; case INVALID_OBJECT_TYPE: *cs = "INVALID_OBJECT_TYPE"; break; case SECURITY_VIOLATION: *cs = "SECURITY_VIOLATION"; break; case GENERIC_STATE_INCOMPATIBILITY: *cs = "GENERIC_STATE_INCOMPATIBILITY"; break; case INVALID_OBJECT_STATE: *cs = "INVALID_OBJECT_STATE"; break; case INVALID_CONNECTION_ID_FOR_ACTIVE_CALL: *cs = "INVALID_CONNECTION_ID_FOR_ACTIVE_CALL"; break; case NO_ACTIVE_CALL: *cs = "NO_ACTIVE_CALL"; break; case NO_HELD_CALL: *cs = "NO_HELD_CALL"; break; case NO_CALL_TO_CLEAR: *cs = "NO_CALL_TO_CLEAR"; break; case NO_CONNECTION_TO_CLEAR: *cs = "NO_CONNECTION_TO_CLEAR"; break; case NO_CALL_TO_ANSWER: *cs = "NO_CALL_TO_ANSWER"; break; case NO_CALL_TO_COMPLETE: *cs = "NO_CALL_TO_COMPLETE"; break; case GENERIC_SYSTEM_RESOURCE_AVAILABILITY: *cs = "GENERIC_SYSTEM_RESOURCE_AVAILABILITY"; break; case SERVICE_BUSY: *cs = "SERVICE_BUSY"; break; case RESOURCE_BUSY: *cs = "RESOURCE_BUSY"; break; case RESOURCE_OUT_OF_SERVICE: *cs = "RESOURCE_OUT_OF_SERVICE"; break; case NETWORK_BUSY: *cs = "NETWORK_BUSY"; break; case NETWORK_OUT_OF_SERVICE: *cs = "NETWORK_OUT_OF_SERVICE"; break; case OVERALL_MONITOR_LIMIT_EXCEEDED: *cs = "OVERALL_MONITOR_LIMIT_EXCEEDED"; break; case CONFERENCE_MEMBER_LIMIT_EXCEEDED: *cs = "CONFERENCE_MEMBER_LIMIT_EXCEEDED"; break; case GENERIC_SUBSCRIBED_RESOURCE_AVAILABILITY: *cs = "GENERIC_SUBSCRIBED_RESOURCE_AVAILABILITY"; break; case OBJECT_MONITOR_LIMIT_EXCEEDED: *cs = "OBJECT_MONITOR_LIMIT_EXCEEDED"; break; case EXTERNAL_TRUNK_LIMIT_EXCEEDED: *cs = "EXTERNAL_TRUNK_LIMIT_EXCEEDED"; break; case OUTSTANDING_REQUEST_LIMIT_EXCEEDED: *cs = "OUTSTANDING_REQUEST_LIMIT_EXCEEDED"; break; case GENERIC_PERFORMANCE_MANAGEMENT: *cs = "GENERIC_PERFORMANCE_MANAGEMENT"; break; case PERFORMANCE_LIMIT_EXCEEDED: *cs = "PERFORMANCE_LIMIT_EXCEEDED"; break; case UNSPECIFIED_SECURITY_ERROR: *cs = "UNSPECIFIED_SECURITY_ERROR"; break; case SEQUENCE_NUMBER_VIOLATED: *cs = "SEQUENCE_NUMBER_VIOLATED"; break; case TIME_STAMP_VIOLATED: *cs = "TIME_STAMP_VIOLATED"; break; case PAC_VIOLATED: *cs = "PAC_VIOLATED"; break; case SEAL_VIOLATED: *cs = "SEAL_VIOLATED"; break; case GENERIC_UNSPECIFIED_REJECTION: *cs = "GENERIC_UNSPECIFIED_REJECTION"; break; case GENERIC_OPERATION_REJECTION: *cs = "GENERIC_OPERATION_REJECTION"; break; case DUPLICATE_INVOCATION_REJECTION: *cs = "DUPLICATE_INVOCATION_REJECTION"; break; case UNRECOGNIZED_OPERATION_REJECTION: *cs = "UNRECOGNIZED_OPERATION_REJECTION"; break; case MISTYPED_ARGUMENT_REJECTION: *cs = "MISTYPED_ARGUMENT_REJECTION"; break; case RESOURCE_LIMITATION_REJECTION: *cs = "RESOURCE_LIMITATION_REJECTION"; break; case ACS_HANDLE_TERMINATION_REJECTION: *cs = "ACS_HANDLE_TERMINATION_REJECTION"; break; case SERVICE_TERMINATION_REJECTION: *cs = "SERVICE_TERMINATION_REJECTION"; break; case REQUEST_TIMEOUT_REJECTION: *cs = "REQUEST_TIMEOUT_REJECTION"; break; case REQUESTS_ON_DEVICE_EXCEEDED_REJECTION: *cs = "REQUESTS_ON_DEVICE_EXCEEDED_REJECTION"; break; case UNRECOGNIZED_APDU_REJECTION: *cs = "UNRECOGNIZED_APDU_REJECTION"; break; case MISTYPED_APDU_REJECTION: *cs = "MISTYPED_APDU_REJECTION"; break; case BADLY_STRUCTURED_APDU_REJECTION: *cs = "BADLY_STRUCTURED_APDU_REJECTION"; break; case INITIATOR_RELEASING_REJECTION: *cs = "INITIATOR_RELEASING_REJECTION"; break; case UNRECOGNIZED_LINKEDID_REJECTION: *cs = "UNRECOGNIZED_LINKEDID_REJECTION"; break; case LINKED_RESPONSE_UNEXPECTED_REJECTION: *cs = "LINKED_RESPONSE_UNEXPECTED_REJECTION"; break; case UNEXPECTED_CHILD_OPERATION_REJECTION: *cs = "UNEXPECTED_CHILD_OPERATION_REJECTION"; break; case MISTYPED_RESULT_REJECTION: *cs = "MISTYPED_RESULT_REJECTION"; break; case UNRECOGNIZED_ERROR_REJECTION: *cs = "UNRECOGNIZED_ERROR_REJECTION"; break; case UNEXPECTED_ERROR_REJECTION: *cs = "UNEXPECTED_ERROR_REJECTION"; break; case MISTYPED_PARAMETER_REJECTION: *cs = "MISTYPED_PARAMETER_REJECTION"; break; case NON_STANDARD: *cs = "NON_STANDARD"; break; default: cs->Format( "error=%d", error ); break; } return cs; } CString * makeACSERRStr( RetCode_t rc, CString &request ) { CString *cs = new CString; switch ( rc ) { case ACSERR_APIVERDENIED: cs->Format( "%s failed: ACSERR_APIVERDENIED", request.GetString() ); break; case ACSERR_BADPARAMETER: cs->Format( "%s failed: ACSERR_BADPARAMETER", request.GetString() ); break; case ACSERR_DUPSTREAM: cs->Format( "%s failed: ACSERR_DUPSTREAM", request.GetString() ); break; case ACSERR_NODRIVER: cs->Format( "%s failed: ACSERR_NODRIVER", request.GetString() ); break; case ACSERR_NOSERVER: cs->Format( "%s failed: ACSERR_NOSERVER", request.GetString() ); break; case ACSERR_NORESOURCE: cs->Format( "%s failed: ACSERR_NORESOURCE", request.GetString() ); break; case ACSERR_UBUFSMALL: cs->Format( "%s failed: ACSERR_UBUFSMALL", request.GetString() ); break; case ACSERR_NOMESSAGE: cs->Format( "%s failed: ACSERR_NOMESSAGE", request.GetString() ); break; case ACSERR_UNKNOWN: cs->Format( "%s failed: ACSERR_UNKNOWN", request.GetString() ); break; case ACSERR_BADHDL: cs->Format( "%s failed: ACSERR_BADHDL", request.GetString() ); break; case ACSERR_STREAM_FAILED: cs->Format( "%s failed: ACSERR_STREAM_FAILED", request.GetString() ); break; case ACSERR_NOBUFFERS: cs->Format( "%s failed: ACSERR_NOBUFFERS", request.GetString() ); break; case ACSERR_QUEUE_FULL: cs->Format( "%s failed: ACSERR_QUEUE_FULL", request.GetString() ); break; default: cs->Format( "%s failed: rc=%d", request.GetString(), rc ); break; } return cs; } CString * makeATTEventStr( ATTEvent_t * ATTEvent ) { CString *cs = new CString; CString *csPtr; if ( ATTEvent->eventType == 0 ) { // no private data return cs; } *cs += "\n ============== Private Data =============="; switch( ATTEvent->eventType ) { case ATTV5_CLEAR_CONNECTION: *cs += "\n ATTV5_CLEAR_CONNECTION"; break; case ATTV5_CONSULTATION_CALL: *cs += "\n ATTV5_CONSULTATION_CALL"; break; case ATTV5_MAKE_CALL: *cs += "\n ATTV5_MAKE_CALL"; break; case ATTV5_DIRECT_AGENT_CALL: *cs += "\n ATTV5_DIRECT_AGENT_CALL"; break; case ATTV5_MAKE_PREDICTIVE_CALL: *cs += "\n ATTV5_MAKE_PREDICTIVE_CALL"; break; case ATTV5_SUPERVISOR_ASSIST_CALL: *cs += "\n ATTV5_SUPERVISOR_ASSIST_CALL"; break; case ATTV5_RECONNECT_CALL: *cs += "\n ATTV5_RECONNECT_CALL"; break; case ATTV4_SENDDTMF_TONE: *cs += "\n ATTV4_SENDDTMF_TONE"; break; case ATT_SENDDTMF_TONE_CONF: *cs += "\n ATT_SENDDTMF_TONE_CONF"; break; case ATTV4_SET_AGENT_STATE: *cs += "\n ATTV4_SET_AGENT_STATE"; break; case ATT_QUERY_ACD_SPLIT: *cs += "\n ATT_QUERY_ACD_SPLIT"; break; case ATT_QUERY_ACD_SPLIT_CONF: *cs += "\n ATT_QUERY_ACD_SPLIT_CONF"; break; case ATT_QUERY_AGENT_LOGIN: *cs += "\n ATT_QUERY_AGENT_LOGIN"; break; case ATT_QUERY_AGENT_LOGIN_CONF: *cs += "\n ATT_QUERY_AGENT_LOGIN_CONF"; break; case ATT_QUERY_AGENT_LOGIN_RESP: *cs += "\n ATT_QUERY_AGENT_LOGIN_RESP"; break; case ATT_QUERY_AGENT_STATE: *cs += "\n ATT_QUERY_AGENT_STATE"; break; case ATTV4_QUERY_AGENT_STATE_CONF: *cs += "\n ATTV4_QUERY_AGENT_STATE_CONF"; break; case ATT_QUERY_CALL_CLASSIFIER: *cs += "\n ATT_QUERY_CALL_CLASSIFIER"; break; case ATT_QUERY_CALL_CLASSIFIER_CONF: *cs += "\n ATT_QUERY_CALL_CLASSIFIER_CONF"; break; case ATTV4_QUERY_DEVICE_INFO_CONF: *cs += "\n ATTV4_QUERY_DEVICE_INFO_CONF"; break; case ATT_QUERY_MWI_CONF: *cs += "\n ATT_QUERY_MWI_CONF"; break; case ATT_QUERY_STATION_STATUS: *cs += "\n ATT_QUERY_STATION_STATUS"; break; case ATT_QUERY_STATION_STATUS_CONF: *cs += "\n ATT_QUERY_STATION_STATUS_CONF"; break; case ATT_QUERY_TOD: *cs += "\n ATT_QUERY_TOD"; break; case ATT_QUERY_TOD_CONF: *cs += "\n ATT_QUERY_TOD_CONF"; break; case ATT_QUERY_TG: *cs += "\n ATT_QUERY_TG"; break; case ATT_QUERY_TG_CONF: *cs += "\n ATT_QUERY_TG_CONF"; break; case ATTV4_SNAPSHOT_DEVICE_CONF: *cs += "\n ATTV4_SNAPSHOT_DEVICE_CONF"; break; case ATTV4_MONITOR_FILTER: *cs += "\n ATTV4_MONITOR_FILTER"; break; case ATTV4_MONITOR_CONF: *cs += "\n ATTV4_MONITOR_CONF"; break; case ATT_MONITOR_STOP_ON_CALL: *cs += "\n ATT_MONITOR_STOP_ON_CALL"; break; case ATT_MONITOR_STOP_ON_CALL_CONF: *cs += "\n ATT_MONITOR_STOP_ON_CALL_CONF"; break; case ATTV4_MONITOR_CALL_CONF: *cs += "\n ATTV4_MONITOR_CALL_CONF"; break; case ATT_CALL_CLEARED: *cs += "\n ATT_CALL_CLEARED"; break; case ATTV3_CONFERENCED: *cs += "\n ATTV3_CONFERENCED"; break; case ATTV5_CONNECTION_CLEARED: *cs += "\n ATTV5_CONNECTION_CLEARED"; break; case ATTV3_DELIVERED: *cs += "\n ATTV3_DELIVERED"; break; case ATT_ENTERED_DIGITS: *cs += "\n ATT_ENTERED_DIGITS"; break; case ATTV3_ESTABLISHED: *cs += "\n ATTV3_ESTABLISHED"; break; case ATTV4_NETWORK_REACHED: *cs += "\n ATTV4_NETWORK_REACHED"; break; case ATTV3_TRANSFERRED: *cs += "\n ATTV3_TRANSFERRED"; break; case ATTV4_ROUTE_REQUEST: *cs += "\n ATTV4_ROUTE_REQUEST"; break; case ATTV5_ROUTE_SELECT: *cs += "\n ATTV5_ROUTE_SELECT"; break; case ATT_ROUTE_USED: *cs += "\n ATT_ROUTE_USED"; break; case ATT_SYS_STAT: *cs += "\n ATT_SYS_STAT"; break; case ATTV3_LINK_STATUS: *cs += "\n ATTV3_LINK_STATUS"; break; case ATTV5_ORIGINATED: *cs += "\n ATTV5_ORIGINATED"; break; case ATT_LOGGED_ON: *cs += "\n ATT_LOGGED_ON"; break; case ATT_QUERY_DEVICE_NAME: *cs += "\n ATT_QUERY_DEVICE_NAME"; break; case ATTV4_QUERY_DEVICE_NAME_CONF: *cs += "\n ATTV4_QUERY_DEVICE_NAME_CONF"; break; case ATT_QUERY_AGENT_MEASUREMENTS: *cs += "\n ATT_QUERY_AGENT_MEASUREMENTS"; break; case ATT_QUERY_AGENT_MEASUREMENTS_CONF: *cs += "\n ATT_QUERY_AGENT_MEASUREMENTS_CONF"; break; case ATT_QUERY_SPLIT_SKILL_MEASUREMENTS: *cs += "\n ATT_QUERY_SPLIT_SKILL_MEASUREMENTS"; break; case ATT_QUERY_SPLIT_SKILL_MEASUREMENTS_CONF: *cs += "\n ATT_QUERY_SPLIT_SKILL_MEASUREMENTS_CONF"; break; case ATT_QUERY_TRUNK_GROUP_MEASUREMENTS: *cs += "\n ATT_QUERY_TRUNK_GROUP_MEASUREMENTS"; break; case ATT_QUERY_TRUNK_GROUP_MEASUREMENTS_CONF: *cs += "\n ATT_QUERY_TRUNK_GROUP_MEASUREMENTS_CONF"; break; case ATT_QUERY_VDN_MEASUREMENTS: *cs += "\n ATT_QUERY_VDN_MEASUREMENTS"; break; case ATT_QUERY_VDN_MEASUREMENTS_CONF: *cs += "\n ATT_QUERY_VDN_MEASUREMENTS_CONF"; break; case ATTV4_CONFERENCED: *cs += "\n ATTV4_CONFERENCED"; break; case ATTV4_DELIVERED: *cs += "\n ATTV4_DELIVERED"; break; case ATTV4_ESTABLISHED: *cs += "\n ATTV4_ESTABLISHED"; break; case ATTV4_TRANSFERRED: *cs += "\n ATTV4_TRANSFERRED"; break; case ATTV4_LINK_STATUS: *cs += "\n ATTV4_LINK_STATUS"; break; case ATTV4_GETAPI_CAPS_CONF: *cs += "\n ATTV4_GETAPI_CAPS_CONF"; break; case ATT_SINGLE_STEP_CONFERENCE_CALL: *cs += "\n ATT_SINGLE_STEP_CONFERENCE_CALL"; break; case ATT_SINGLE_STEP_CONFERENCE_CALL_CONF: *cs += "\n ATT_SINGLE_STEP_CONFERENCE_CALL_CONF"; break; case ATT_SELECTIVE_LISTENING_HOLD: *cs += "\n ATT_SELECTIVE_LISTENING_HOLD"; break; case ATT_SELECTIVE_LISTENING_HOLD_CONF: *cs += "\n ATT_SELECTIVE_LISTENING_HOLD_CONF"; break; case ATT_SELECTIVE_LISTENING_RETRIEVE: *cs += "\n ATT_SELECTIVE_LISTENING_RETRIEVE"; break; case ATT_SELECTIVE_LISTENING_RETRIEVE_CONF: *cs += "\n ATT_SELECTIVE_LISTENING_RETRIEVE_CONF"; break; case ATT_SENDDTMF_TONE: *cs += "\n ATT_SENDDTMF_TONE"; break; case ATT_SNAPSHOT_DEVICE_CONF: *cs += "\n ATT_SNAPSHOT_DEVICE_CONF"; *cs += "\n snapshotData="; csPtr = new CString; csPtr->Format( "%d", ATTEvent->u.snapshotDevice.count ); for ( int i=0; i u.snapshotDevice.count; i++ ) { CString *csASD = makeATTSnapshotDeviceStr( &ATTEvent->u.snapshotDevice.pSnapshotDevice[i] ); CString tmp_cs; tmp_cs.Format( "\n snap%d=%s", i, csASD->GetString() ); delete csASD; *csPtr += tmp_cs; } *cs += csPtr->GetString(); delete csPtr; break; case ATT_LINK_STATUS: *cs += "\n ATT_LINK_STATUS"; break; case ATT_SET_BILL_RATE: *cs += "\n ATT_SET_BILL_RATE"; break; case ATT_SET_BILL_RATE_CONF: *cs += "\n ATT_SET_BILL_RATE_CONF"; break; case ATT_QUERY_UCID: *cs += "\n ATT_QUERY_UCID"; break; case ATT_QUERY_UCID_CONF: *cs += "\n ATT_QUERY_UCID_CONF"; break; case ATTV5_CONFERENCED: *cs += "\n ATTV5_CONFERENCED"; break; case ATT_LOGGED_OFF: *cs += "\n ATT_LOGGED_OFF"; break; case ATTV5_DELIVERED: *cs += "\n ATTV5_DELIVERED"; break; case ATTV5_ESTABLISHED: *cs += "\n ATTV5_ESTABLISHED"; break; case ATTV5_TRANSFERRED: *cs += "\n ATTV5_TRANSFERRED"; break; case ATTV5_ROUTE_REQUEST: *cs += "\n ATTV5_ROUTE_REQUEST"; break; case ATT_CONSULTATION_CALL_CONF: *cs += "\n ATT_CONSULTATION_CALL_CONF"; csPtr = new CString; csPtr->Format( "\n ucid='%s'", ATTEvent->u.consultationCall.ucid ); *cs += csPtr->GetString(); delete csPtr; break; case ATT_MAKE_CALL_CONF: *cs += "\n ATT_MAKE_CALL_CONF"; csPtr = new CString; csPtr->Format( "\n ucid='%s'", ATTEvent->u.makeCall.ucid ); *cs += csPtr->GetString(); delete csPtr; break; case ATT_MAKE_PREDICTIVE_CALL_CONF: *cs += "\n ATT_MAKE_PREDICTIVE_CALL_CONF"; break; case ATTV5_SET_AGENT_STATE: *cs += "\n ATTV5_SET_AGENT_STATE"; break; case ATTV5_QUERY_AGENT_STATE_CONF: *cs += "\n ATTV5_QUERY_AGENT_STATE_CONF"; break; case ATT_QUERY_DEVICE_NAME_CONF: *cs += "\n ATT_QUERY_DEVICE_NAME_CONF"; break; case ATT_CONFERENCE_CALL_CONF: *cs += "\n ATT_CONFERENCE_CALL_CONF"; break; case ATT_TRANSFER_CALL_CONF: *cs += "\n ATT_TRANSFER_CALL_CONF"; break; case ATT_MONITOR_FILTER: *cs += "\n ATT_MONITOR_FILTER"; break; case ATT_MONITOR_CONF: *cs += "\n ATT_MONITOR_CONF"; csPtr = new CString; csPtr->Format( "\n usedFilter=0x%2.2x", ATTEvent->u.monitorStart.usedFilter ); *cs += csPtr->GetString(); delete csPtr; break; case ATT_MONITOR_CALL_CONF: *cs += "\n ATT_MONITOR_CALL_CONF"; break; case ATT_SERVICE_INITIATED: *cs += "\n ATT_SERVICE_INITIATED"; csPtr = new CString; csPtr->Format( "\n ucid='%s'", ATTEvent->u.serviceInitiated.ucid ); *cs += csPtr->GetString(); delete csPtr; break; case ATT_CHARGE_ADVICE: *cs += "\n ATT_CHARGE_ADVICE"; break; case ATT_GETAPI_CAPS_CONF: *cs += "\n ATT_GETAPI_CAPS_CONF"; break; case ATT_QUERY_DEVICE_INFO_CONF: *cs += "\n ATT_QUERY_DEVICE_INFO_CONF"; break; case ATT_SET_ADVICE_OF_CHARGE: *cs += "\n ATT_SET_ADVICE_OF_CHARGE"; break; case ATT_SET_ADVICE_OF_CHARGE_CONF: *cs += "\n ATT_SET_ADVICE_OF_CHARGE_CONF"; break; case ATT_NETWORK_REACHED: *cs += "\n ATT_NETWORK_REACHED"; break; case ATT_SET_AGENT_STATE: *cs += "\n ATT_SET_AGENT_STATE"; break; case ATT_SET_AGENT_STATE_CONF: *cs += "\n ATT_SET_AGENT_STATE_CONF"; break; case ATT_QUERY_AGENT_STATE_CONF: *cs += "\n ATT_QUERY_AGENT_STATE_CONF"; break; case ATT_ROUTE_REQUEST: *cs += "\n ATT_ROUTE_REQUEST"; break; case ATT_TRANSFERRED: *cs += "\n ATT_TRANSFERRED"; break; case ATT_CONFERENCED: *cs += "\n ATT_CONFERENCED"; *cs += "\n OCI (originalCallInfo):"; csPtr = makeATTOriginalCallInfoStr( &ATTEvent->u.conferencedEvent.originalCallInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n distributingDevice="; csPtr = makeExtendedDeviceIDStr( &ATTEvent->u.conferencedEvent.distributingDevice ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n ucid='%s'", ATTEvent->u.conferencedEvent.ucid ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n trunkList="; csPtr = makeATTTrunkListStr( &ATTEvent->u.conferencedEvent.trunkList ); *cs += csPtr->GetString(); delete csPtr; break; case ATT_CLEAR_CONNECTION: *cs += "\n ATT_CLEAR_CONNECTION"; break; case ATT_CONSULTATION_CALL: *cs += "\n ATT_CONSULTATION_CALL"; break; case ATT_MAKE_CALL: *cs += "\n ATT_MAKE_CALL"; break; case ATT_DIRECT_AGENT_CALL: *cs += "\n ATT_DIRECT_AGENT_CALL"; break; case ATT_MAKE_PREDICTIVE_CALL: *cs += "\n ATT_MAKE_PREDICTIVE_CALL"; break; case ATT_SUPERVISOR_ASSIST_CALL: *cs += "\n ATT_SUPERVISOR_ASSIST_CALL"; break; case ATT_RECONNECT_CALL: *cs += "\n ATT_RECONNECT_CALL"; break; case ATT_CONNECTION_CLEARED: *cs += "\n ATT_CONNECTION_CLEARED"; break; case ATT_ROUTE_SELECT: *cs += "\n ATT_ROUTE_SELECT"; break; case ATT_DELIVERED: *cs += "\n ATT_DELIVERED"; *cs += "\n deliveredType="; csPtr = makeATTDeliveredTypeStr( ATTEvent->u.deliveredEvent.deliveredType ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n trunkGroup='%s'", ATTEvent->u.deliveredEvent.trunkGroup ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n trunkMember='%s'", ATTEvent->u.deliveredEvent.trunkMember ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n split='%s'", ATTEvent->u.deliveredEvent.split ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n lookaheadInfo="; csPtr = makeATTLookaheadInfoStr( &ATTEvent->u.deliveredEvent.lookaheadInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n userEnteredCode="; csPtr = makeATTUserEnteredCodeStr( &ATTEvent->u.deliveredEvent.userEnteredCode ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n userInfo="; csPtr = makeATTUserToUserInfoStr( &ATTEvent->u.deliveredEvent.userInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n reason="; csPtr = makeATTReasonCodeStr( ATTEvent->u.deliveredEvent.reason ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI (originalCallInfo):"; csPtr = makeATTOriginalCallInfoStr( &ATTEvent->u.deliveredEvent.originalCallInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n distributingDevice="; csPtr = makeExtendedDeviceIDStr( &ATTEvent->u.deliveredEvent.distributingDevice ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n ucid='%s'", ATTEvent->u.deliveredEvent.ucid ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n callOriginatorInfo="; csPtr = makeATTCallOriginatorInfoStr( &ATTEvent->u.deliveredEvent.callOriginatorInfo ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n flexibleBilling=%d", ATTEvent->u.deliveredEvent.flexibleBilling ); *cs += csPtr->GetString(); delete csPtr; break; case ATT_ESTABLISHED: *cs += "\n ATT_ESTABLISHED"; csPtr = new CString; csPtr->Format( "\n trunkGroup='%s'", ATTEvent->u.establishedEvent.trunkGroup ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n trunkMember='%s'", ATTEvent->u.establishedEvent.trunkMember ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n split='%s'", ATTEvent->u.establishedEvent.split ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n lookaheadInfo="; csPtr = makeATTLookaheadInfoStr( &ATTEvent->u.establishedEvent.lookaheadInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n userEnteredCode="; csPtr = makeATTUserEnteredCodeStr( &ATTEvent->u.establishedEvent.userEnteredCode ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n userInfo="; csPtr = makeATTUserToUserInfoStr( &ATTEvent->u.establishedEvent.userInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n reason="; csPtr = makeATTReasonCodeStr( ATTEvent->u.establishedEvent.reason ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI (originalCallInfo):"; csPtr = makeATTOriginalCallInfoStr( &ATTEvent->u.establishedEvent.originalCallInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n distributingDevice="; csPtr = makeExtendedDeviceIDStr( &ATTEvent->u.establishedEvent.distributingDevice ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n ucid='%s'", ATTEvent->u.establishedEvent.ucid ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n callOriginatorInfo="; csPtr = makeATTCallOriginatorInfoStr( &ATTEvent->u.establishedEvent.callOriginatorInfo ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n flexibleBilling=%d", ATTEvent->u.establishedEvent.flexibleBilling ); *cs += csPtr->GetString(); delete csPtr; break; case ATT_ORIGINATED: *cs += "\n ATT_ORIGINATED"; break; default: csPtr = new CString; csPtr->Format( "\n ATTeventType=%d", ATTEvent->eventType ); *cs += csPtr->GetString(); delete csPtr; break; } return cs; } CString * makeATTSnapshotDeviceStr( ATTSnapshotDevice_t *snapshotDevice ) { CString *cs = new CString; CString *csCID = makeConnectionIDStr( &snapshotDevice->call ); CString *csALCS = makeATTLocalCallStateStr( snapshotDevice->state ); cs->Format( "{ call=%s state=%s }", csCID->GetString(), csALCS->GetString() ); delete csCID; delete csALCS; return cs; } CString * makeATTLocalCallStateStr( ATTLocalCallState_t localCallState ) { CString *cs = new CString; switch( localCallState ) { case ATT_CS_INITIATED: *cs = "Initiated"; break; case ATT_CS_ALERTING: *cs = "Alerting"; break; case ATT_CS_CONNECTED: *cs = "Connected"; break; case ATT_CS_HELD: *cs = "Held"; break; case ATT_CS_BRIDGED: *cs = "Bridged"; break; case ATT_CS_OTHER: *cs = "Other"; break; default: cs->Format( "%d", localCallState ); break; } return cs; } CString * makeATTCallOriginatorInfoStr( ATTCallOriginatorInfo_t *callOriginatorInfo ) { CString *cs = new CString; cs->Format( "{ hasInfo=%d callOriginatorType=%d }", callOriginatorInfo->hasInfo, callOriginatorInfo->callOriginatorType ); return cs; } CString * makeATTDeliveredTypeStr( ATTDeliveredType_t deliveredType ) { CString *cs = new CString; switch( deliveredType ) { case DELIVERED_TO_ACD: *cs = "ToACD"; break; case DELIVERED_TO_STATION: *cs = "ToStation"; break; case DELIVERED_OTHER: *cs = "Other"; break; default: cs->Format( "%d", deliveredType ); break; } return cs; } CString * makeATTLookaheadInfoStr( ATTLookaheadInfo_t *lookaheadInfo ) { CString *cs = new CString; CString *csAP = makeATTPriorityStr( lookaheadInfo->priority ); CString *csAI = makeATTInterflowStr( lookaheadInfo->type ); CString *csAUDID = makeATTUnicodeDeviceIDStr( &lookaheadInfo->uSourceVDN ); cs->Format( "{ type=%s priority=%s %2.2d:%2.2d:%2.2d uSourceVDN=%s }", csAI->GetString(), csAP->GetString(), lookaheadInfo->hours, lookaheadInfo->minutes, lookaheadInfo->seconds, csAUDID->GetString() ); delete csAP; delete csAI; delete csAUDID; return cs; } CString * makeATTOriginalCallInfoStr( ATTOriginalCallInfo_t *originalCallInfo ) { CString *cs = new CString; CString *csPtr; *cs += "\n OCI reason="; csPtr = makeATTReasonForCallInfoStr( originalCallInfo->reason ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI callingDevice="; csPtr = makeExtendedDeviceIDStr( &originalCallInfo->callingDevice ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI calledDevice="; csPtr = makeExtendedDeviceIDStr( &originalCallInfo->calledDevice ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n OCI trunkGroup='%s'", originalCallInfo->trunkGroup ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n OCI trunkMember='%s'", originalCallInfo->trunkMember ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI lookaheadInfo="; csPtr = makeATTLookaheadInfoStr( &originalCallInfo->lookaheadInfo ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI userEnteredCode="; csPtr = makeATTUserEnteredCodeStr( &originalCallInfo->userEnteredCode ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI userInfo="; csPtr = makeATTUserToUserInfoStr( &originalCallInfo->userInfo ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n OCI ucid='%s'", originalCallInfo->ucid ); *cs += csPtr->GetString(); delete csPtr; *cs += "\n OCI callOriginatorInfo="; csPtr = makeATTCallOriginatorInfoStr( &originalCallInfo->callOriginatorInfo ); *cs += csPtr->GetString(); delete csPtr; csPtr = new CString; csPtr->Format( "\n OCI flexibleBilling=%d", originalCallInfo->flexibleBilling ); *cs += csPtr->GetString(); delete csPtr; return cs; } CString * makeATTReasonCodeStr( ATTReasonCode_t reasonCode ) { CString *cs = new CString; switch( reasonCode ) { case AR_NONE: *cs = "None"; break; case AR_ANSWER_NORMAL: *cs = "AnswerNormal"; break; case AR_ANSWER_TIMED: *cs = "AnswerTimed"; break; case AR_ANSWER_VOICE_ENERGY: *cs = "AnswerVoiceEnergy"; break; case AR_ANSWER_MACHINE_DETECTED: *cs = "MachineDetected"; break; case AR_SIT_REORDER: *cs = "SitReorder"; break; case AR_SIT_NO_CIRCUIT: *cs = "SitNoCircuit"; break; case AR_SIT_INTERCEPT: *cs = "Intercept"; break; case AR_SIT_VACANT_CODE: *cs = "VacantCode"; break; case AR_SIT_INEFFECTIVE_OTHER: *cs = "IneffectiveOther"; break; case AR_SIT_UNKNOWN: *cs = "Unknown"; break; case AR_IN_QUEUE: *cs = "InQueue"; break; case AR_SERVICE_OBSERVER: *cs = "ServiceObserver"; break; default: cs->Format( "%d", reasonCode ); break; } return cs; } CString * makeATTUserEnteredCodeStr( ATTUserEnteredCode_t *userEnteredCode ) { CString *cs = new CString; CString *csAUECT = makeATTUserEnteredCodeTypeStr( userEnteredCode->type ); CString *csAUECI = makeATTUserEnteredCodeIndicatorStr( userEnteredCode->indicator ); cs->Format( "{ type=%s indicator=%s data='%s' collectVDN='%s' }", csAUECT->GetString(), csAUECI->GetString(), userEnteredCode->data, userEnteredCode->collectVDN ); delete csAUECT; delete csAUECI; return cs; } CString * makeATTUserToUserInfoStr( ATTUserToUserInfo_t *userToUserInfo ) { CString *cs = new CString; int i; char ucStr[3]; switch ( userToUserInfo->type ) { case UUI_NONE: cs->Format( "{ None[%d] }", userToUserInfo->data.length ); break; case UUI_USER_SPECIFIC: cs->Format( "{ UserSpecific[%d] 0x: ", userToUserInfo->data.length ); for (i=0; i data.length; i++) { sprintf( ucStr, "%2.2x ", userToUserInfo->data.value[i] ); *cs += ucStr; } *cs += "}"; break; case UUI_IA5_ASCII: cs->Format( "{ Ia5Ascii[%d]: ", userToUserInfo->data.length ); for (i=0; i data.length; i++) { sprintf( ucStr, "%c", userToUserInfo->data.value[i] ); *cs += ucStr; } *cs += " }"; break; default: cs->Format( "{ %d[%d] }", userToUserInfo->type, userToUserInfo->data.length ); break; } return cs; } CString * makeATTPriorityStr( ATTPriority_t priority ) { CString *cs = new CString; switch( priority ) { case LAI_NOT_IN_QUEUE: *cs = "NotInQueue"; break; case LAI_LOW: *cs = "Low"; break; case LAI_MEDIUM: *cs = "Medium"; break; case LAI_HIGH: *cs = "High"; break; case LAI_TOP: *cs = "Top"; break; default: cs->Format( "%d", priority ); break; } return cs; } CString * makeATTInterflowStr( ATTInterflow_t interflow ) { CString *cs = new CString; switch( interflow ) { case LAI_NO_INTERFLOW: *cs = "NoInterflow"; break; case LAI_ALL_INTERFLOW: *cs = "AllInterflow"; break; case LAI_THRESHOLD_INTERFLOW: *cs = "ThresholdInterflow"; break; case LAI_VECTORING_INTERFLOW: *cs = "VectoringInterflow"; break; default: cs->Format( "%d", interflow ); break; } return cs; } CString * makeATTUnicodeDeviceIDStr( ATTUnicodeDeviceID_t *unicodeDeviceID ) { CString *cs = new CString; if ( unicodeDeviceID->count == 0 ) { *cs += "{}"; return cs; } int i; char usStr[33]; cs->Format( "{ [%d] 0x: ", unicodeDeviceID->count ); for (i=0; i count; i++) { sprintf( usStr, "%4.4x ", unicodeDeviceID->value[i] ); *cs += usStr; } *cs += "}"; return cs; } CString * makeATTReasonForCallInfoStr( ATTReasonForCallInfo_t reasonForCallInfo ) { CString *cs = new CString; switch( reasonForCallInfo ) { case OR_NONE: *cs = "None"; break; case OR_CONSULTATION: *cs = "Consultation"; break; case OR_CONFERENCED: *cs = "Conferenced"; break; case OR_TRANSFERRED: *cs = "Transferred"; break; case OR_NEW_CALL: *cs = "NewCall"; break; default: cs->Format( "%d", reasonForCallInfo ); break; } return cs; } CString * makeATTUserEnteredCodeTypeStr( ATTUserEnteredCodeType_t userEnteredCodeType ) { CString *cs = new CString; switch( userEnteredCodeType ) { case UE_NONE: *cs = "None"; break; case UE_ANY: *cs = "Any"; break; case UE_LOGIN_DIGITS: *cs = "LoginDigits"; break; case UE_CALL_PROMPTER: *cs = "CallPrompter"; break; case UE_DATA_BASE_PROVIDED: *cs = "DataBaseProvided"; break; case UE_TONE_DETECTOR: *cs = "ToneDetector"; break; default: cs->Format( "%d", userEnteredCodeType ); break; } return cs; } CString * makeATTUserEnteredCodeIndicatorStr( ATTUserEnteredCodeIndicator_t userEnteredCodeIndicator ) { CString *cs = new CString; switch( userEnteredCodeIndicator ) { case UE_COLLECT: *cs = "Collect"; break; case UE_ENTERED: *cs = "Entered"; break; default: cs->Format( "%d", userEnteredCodeIndicator ); break; } return cs; } CString * makeATTTrunkListStr( ATTTrunkList_t *trunkList ) { CString *cs = new CString; cs->Format( "%d", trunkList->count ); for ( int i=0; i count; i++ ) { trunkList->trunks ; CString *csATI = makeATTTrunkInfoStr( &trunkList->trunks[i] ); CString tmp_cs; tmp_cs.Format( "\n trunk%d=%s", i, csATI->GetString() ); delete csATI; *cs += tmp_cs; } return cs; } CString * makeATTTrunkInfoStr( ATTTrunkInfo_t *trunkInfo ) { CString *cs = new CString; CString *csCID = makeConnectionIDStr( &trunkInfo->connection ); cs->Format( "{ connection=%s trunkGroup='%s' trunkMember='%s' }", csCID->GetString(), trunkInfo->trunkGroup, trunkInfo->trunkMember ); delete csCID; return cs; } char * TimeStamp( char *timeStamp ) /* buffer for printing time string */ { struct __timeb64 tstruct; struct tm *tm; /* local time info */ _ftime64( &tstruct ); tm = _localtime64( &(tstruct.time) ); (void) sprintf( timeStamp, "%.2d/%.2d/%.4d %.2d:%.2d:%.2d.%3.3ld", tm->tm_mon+1, tm->tm_mday, tm->tm_year+1900, tm->tm_hour, tm->tm_min, tm->tm_sec, tstruct.millitm ); return( timeStamp ); } /* end TimeStamp() */ void OutputToConsole(char *func, char *format, ...) { char string1[ OTC_STANDARD_MESSAGE ]; char string2[ OTC_SMALL_MESSAGE ]; char *string1p; va_list argv; va_start(argv, format); #ifdef TICKCOUNT _snprintf( string2, sizeof(string2), "%u T=0x%4.4X %s \n ", GetTickCount(), GetCurrentThreadId(), func ); #else // TICKCOUNT char timeStamp[50]; _snprintf( string2, sizeof(string2), "%s T=0x%4.4X %s \n ", TimeStamp( timeStamp ), GetCurrentThreadId(), func ); #endif // TICKCOUNT string2[sizeof(string2)-1] = '\0'; // make sure the string is null terminated BasicString bls = string2; int rc1; rc1 = _vsnprintf(string1, sizeof(string1), format, argv); if (rc1 < 0) { // the string will not fit within the STANDARD_MESSAGE length if ((string1p = (char *)malloc(OTC_LARGE_MESSAGE)) == NULL) { // malloc failed ... do the best we can string1[sizeof(string1)-1] = '\0'; // make sure the string is null terminated bls += string1; bls += "\n************ OutputToConsole warning: preceeding message was truncated to standard message length! ************\n"; } else { try { // malloc worked ... see if we can fit now rc1 = _vsnprintf(string1p, OTC_LARGE_MESSAGE, format, argv); if (rc1 < 0) { // the string will not fit within the LARGEST_MESSAGE length string1p[ OTC_LARGE_MESSAGE-1 ] = '\0'; // make sure the string is null terminated bls += string1p; bls += "\n************ OutputToConsole warning: preceeding message was truncated to largest message length! ************\n"; } else { // the string fits within the LARGEST_MESSAGE length bls += string1p; } } catch (...) { char s[ 2 * OTC_SMALL_MESSAGE ]; _snprintf(s, sizeof(s), "%sOutputToConsole ... exception handler\n", string2); s[sizeof(s)-1] = '\0'; OutputDebugString(s); } free(string1p); } } else { // the string fits within the STANDARD_MESSAGE length bls += string1; } // make sure the message has a newline at the end BasicStringIterator blsIter = bls.end(); blsIter--; if ( *blsIter != '\n' ) { bls.append( "\n" ); } // finally we can output the message OutputDebugString(bls.c_str()); return; } InvokeID_t insertIntoHashMap( CString &cs ) { Mtx.Lock(); InvokeID_t invokeID; if ( HashMap.empty() ) { // the hash map is empty ... start with a key of 1 // note: do not use 0 as a key. // removeFromHashMap() and retrieveFromHashMap() both return 0 to indicate that // no key match was found! invokeID = 1; } else { // the hash map is NOT empty // get the key of the last item on the map and increment it by 1 HashMapIter = HashMap.end(); // this takes you past the end of the map HashMapIter--; // move back 1 and you are at the last item invokeID = HashMapIter->first + 1; // increment the last key by 1 } HashMap.insert( HashPair ( invokeID, cs ) ); Mtx.Unlock(); return invokeID; } InvokeID_t removeFromHashMap( InvokeID_t invokeID, CString &removedStr ) { InvokeID_t rc; Mtx.Lock(); HashMapIter = HashMap.find( invokeID ); if ( HashMapIter == HashMap.end() ) { rc = 0; // this assumes that we will never have a real invokeID of 0 removedStr = "no request found"; } else { rc = invokeID; removedStr = "request: " + HashMapIter->second; HashMap.erase(HashMapIter); } Mtx.Unlock(); return rc; } InvokeID_t retrieveFromHashMap( InvokeID_t invokeID, CString &retrievedStr ) { InvokeID_t rc; Mtx.Lock(); HashMapIter = HashMap.find( invokeID ); if ( HashMapIter == HashMap.end() ) { rc = 0; // this assumes that we will never have a real invokeID of 0 retrievedStr = "no request found"; } else { rc = invokeID; retrievedStr = "request: " + HashMapIter->second; } Mtx.Unlock(); return rc; }