internal CSTAEvent_t Read() { try { logger.Info("EventReader.Read: read event header..."); object result; if (m_FrameReader.TryReadStruct(typeof(ACSEventHeader_t), out result)) { ACSEventHeader_t eventHeader = (ACSEventHeader_t)result; logger.Info("EventReader.Read: acsHandle={0};eventClass={1};eventType={2};", eventHeader.acsHandle, eventHeader.eventClass, eventHeader.eventType); switch (eventHeader.eventClass) { case Constants.CSTACONFIRMATION: #region CSTACONFIRMATION int invokeID = m_FrameReader.ReadInt32(); logger.Info("EventReader.Read.CSTACONFIRMATION: invokeID={0};", invokeID); logger.Info("EventReader.Read.CSTACONFIRMATION: Getting CSTAConfParser from parserFactory..."); ICSTAConfirmationParser cstaConfParser = m_CSTAConfParserFactory.CreateParser(eventHeader.eventType); if (cstaConfParser != null) { CSTAConfirmationEvent cstaConfirmation = cstaConfParser.Parse(m_FrameReader); cstaConfirmation.invokeID = invokeID; CSTAEvent_t cstaEvent = new CSTAEvent_t() { eventHeader = eventHeader, Event = { cstaConfirmation = cstaConfirmation } }; return(cstaEvent); } logger.Info("EventReader.Read.CSTACONFIRMATION: ICSTAConfParserFactory failed to return parser!!"); #endregion CSTACONFIRMATION break; case Constants.CSTAUNSOLICITED: #region CSTAUNSOLICITED int xref = m_FrameReader.ReadInt32(); logger.Info("EventReader.Read.CSTAUNSOLICITED: xref={0};", xref); logger.Info("EventReader.Read.CSTAUNSOLICITED: Getting CSTAUnsolicitedParser from parserFactory..."); ICSTAUnsolicitedParser cstaUnsolicitedParser = m_CSTAUnsolicitedParserFactory.CreateParser(eventHeader.eventType); if (cstaUnsolicitedParser != null) { CSTAUnsolicitedEvent cstaUnsolicited = cstaUnsolicitedParser.Parse(m_FrameReader); cstaUnsolicited.monitorCrossRefId = xref; CSTAEvent_t cstaEvent = new CSTAEvent_t() { eventHeader = eventHeader, Event = { cstaUnsolicited = cstaUnsolicited } }; return(cstaEvent); } logger.Info("EventReader.Read.CSTAUNSOLICITED: ICSTAUnsolicitedParserFactory failed to return parser!!"); #endregion CSTAUNSOLICITED break; case Constants.ACSCONFIRMATION: #region ACSCONFIRMATION invokeID = m_FrameReader.ReadInt32(); logger.Info("EventReader.Read.ACSCONFIRMATION: invokeID={0};", invokeID); logger.Info("EventReader.Read.ACSCONFIRMATION: Getting ACSConfirmationParser from parserFactory..."); IACSConfirmationParser acsConfParser = m_ACSConfParserFactory.CreateParser(eventHeader.eventType); if (acsConfParser != null) { ACSConfirmationEvent acsConfirmation = acsConfParser.Parse(m_FrameReader); acsConfirmation.invokeID = invokeID; CSTAEvent_t cstaEvent = new CSTAEvent_t() { eventHeader = eventHeader, Event = { acsConfirmation = acsConfirmation } }; return(cstaEvent); } logger.Info("EventReader.Read.ACSCONFIRMATION: IACSConfirmationParserFactory failed to return parser!!"); #endregion ACSCONFIRMATION break; case Constants.ACSUNSOLICITED: #region ACSUNSOLICITED logger.Info("ACSUNSOLICITED :: Getting ACSUnsolicitedParser from parserFactory..."); IACSUnsolicitedParser acsUnsolicitedParser = m_ACSUnsolicitedParserFactory.CreateParser(eventHeader.eventType); if (acsUnsolicitedParser != null) { ACSUnsolicitedEvent acsUnsolicited = acsUnsolicitedParser.Parse(m_FrameReader); CSTAEvent_t cstaEvent = new CSTAEvent_t() { eventHeader = eventHeader, Event = { acsUnsolicited = acsUnsolicited } }; return(cstaEvent); } logger.Info("ACSUNSOLICITED :: IACSUnsolicitedParserFactory failed to return parser!!"); #endregion ACSUNSOLICITED break; } } } catch (Exception err) { logger.Error(string.Format("Error in EventReader.ReadEvent: {0}", err)); } return(null); }
// [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)] protected void EventCallBack(int lParam) { if (AcsHandle == 0) { return; } try { const int size = 1040 * 4; var pd = new PrivateData_t { length = size }; var ptrCsta = Marshal.AllocHGlobal(size); var ptrPd = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(pd, ptrPd, true); try { ushort count; do { var tt = NativeMethods.acsGetEventPoll(AcsHandle, ptrCsta, ref pd.length, ptrPd, out count); if (tt == ACSFunctionRet_t.ACSPOSITIVE_ACK) { var cstaEvent = new CSTAEvent_t(ptrCsta); var attEvent = new ATTEvent_t(); if ( NativeMethods.attPrivateData(ptrPd, ptrCsta) == ACSFunctionRet_t.ACSPOSITIVE_ACK) { attEvent = new ATTEvent_t(ptrCsta); } var csta = DeepCopy(cstaEvent); var att = DeepCopy(attEvent); switch (csta.eventHeader.eventClass) { case EventClass_t.ACSCONFIRMATION: Acsconfirmation(csta.acsConfirmation, csta.eventHeader.eventTypeACS); break; case EventClass_t.ACSUNSOLICITED: Acsunsolicited(csta.acsUnsolicited, csta.eventHeader.eventTypeACS); break; case EventClass_t.CSTACONFIRMATION: Cstaconfirmation(csta.cstaConfirmation, att, csta.eventHeader.eventTypeCSTA); break; case EventClass_t.CSTAEVENTREPORT: Cstaeventreport(csta.cstaEventReport, att, csta.eventHeader.eventTypeCSTA); break; case EventClass_t.CSTAREQUEST: Cstarequest(csta.cstaRequest, att, csta.eventHeader.eventTypeCSTA); break; case EventClass_t.CSTAUNSOLICITED: Cstaunsolicited(csta.cstaUnsolicited, att, csta.eventHeader.eventTypeCSTA); break; } } else { if (tt != ACSFunctionRet_t.ACSERR_NOMESSAGE && tt != ACSFunctionRet_t.ACSERR_BADHDL) { Log.Error(new Exeption("acsGetEventPoll", tt)); } return; } } while (count > 0); } catch (Exception ex) { Log.Error("EventCallBack", ex); } finally { Marshal.FreeHGlobal(ptrCsta); Marshal.FreeHGlobal(ptrPd); /* ptrCsta.Free(); * ptrPd.Free(); */ } }catch (Exception ex) { Log.Error("EventCallBack", ex); } }
public EventBuffer_t() { this.evt = new CSTAEvent_t(); this.auxData = new Dictionary <string, object>(); }
public EventBuffer_t() { this.evt = new CSTAEvent_t(); this.auxData = new Dictionary<string, object>(); }