public GeneralDSEventData(EdirEventDataType eventDataType, Asn1Object message) : base(eventDataType, message) { int[] length = new int[1]; ds_time = getTaggedIntValue( (Asn1Tagged)decoder.decode(decodedData, length), GeneralEventField.EVT_TAG_GEN_DSTIME); milli_seconds = getTaggedIntValue( (Asn1Tagged)decoder.decode(decodedData, length), GeneralEventField.EVT_TAG_GEN_MILLISEC); nVerb = getTaggedIntValue( (Asn1Tagged)decoder.decode(decodedData, length), GeneralEventField.EVT_TAG_GEN_VERB); current_process = getTaggedIntValue( (Asn1Tagged)decoder.decode(decodedData, length), GeneralEventField.EVT_TAG_GEN_CURRPROC); strPerpetratorDN = getTaggedStringValue( (Asn1Tagged)decoder.decode(decodedData, length), GeneralEventField.EVT_TAG_GEN_PERP); Asn1Tagged temptaggedvalue = ((Asn1Tagged)decoder.decode(decodedData, length)); if (temptaggedvalue.getIdentifier().Tag == (int)GeneralEventField.EVT_TAG_GEN_INTEGERS) { //Integer List. Asn1Sequence inteseq = getTaggedSequence(temptaggedvalue, GeneralEventField.EVT_TAG_GEN_INTEGERS); Asn1Object[] intobject = inteseq.toArray(); integer_values = new int[intobject.Length]; for (int i = 0; i < intobject.Length; i++) { integer_values[i] = ((Asn1Integer)intobject[i]).intValue(); } //second decoding for Strings. temptaggedvalue = ((Asn1Tagged)decoder.decode(decodedData, length)); } else { integer_values = null; } if ((temptaggedvalue.getIdentifier().Tag == (int)GeneralEventField.EVT_TAG_GEN_STRINGS) && (temptaggedvalue.getIdentifier().Constructed)) { //String values. Asn1Sequence inteseq = getTaggedSequence(temptaggedvalue, GeneralEventField.EVT_TAG_GEN_STRINGS); Asn1Object[] stringobject = inteseq.toArray(); string_values = new string[stringobject.Length]; for (int i = 0; i < stringobject.Length; i++) { string_values[i] = ((Asn1OctetString)stringobject[i]).stringValue(); } } else { string_values = null; } DataInitDone(); }