/// <summary> /// TODO: Documentation SessionTerminate /// </summary> /// <param name="to"></param> /// <param name="sid"></param> /// <param name="reasonType"></param> /// <returns></returns> public void SessionTerminate(JID to, String sid, ReasonType?reasonType) { JingleIQ jingleIq = new JingleIQ(this.Stream.Document); jingleIq.From = this.Stream.JID; jingleIq.To = to; jingleIq.Type = IQType.set; jingleIq.Instruction.Action = ActionType.session_terminate; jingleIq.Instruction.Sid = sid; if (reasonType.HasValue) { JingleReason reason = new JingleReason(jingleIq.OwnerDocument); switch (reasonType) { case ReasonType.alternative_session: reason.Reason = new AlternativeSession(jingleIq.OwnerDocument); break; case ReasonType.busy: reason.Reason = new Busy(jingleIq.OwnerDocument); break; case ReasonType.cancel: reason.Reason = new Cancel(jingleIq.OwnerDocument); break; case ReasonType.connectivity_error: reason.Reason = new ConnectivityError(jingleIq.OwnerDocument); break; case ReasonType.decline: reason.Reason = new JingleDecline(jingleIq.OwnerDocument); break; case ReasonType.expired: reason.Reason = new Expired(jingleIq.OwnerDocument); break; case ReasonType.failed_application: reason.Reason = new FailedApplication(jingleIq.OwnerDocument); break; case ReasonType.failed_transport: reason.Reason = new FailedTransport(jingleIq.OwnerDocument); break; case ReasonType.general_error: reason.Reason = new GeneralError(jingleIq.OwnerDocument); break; case ReasonType.gone: reason.Reason = new Gone(jingleIq.OwnerDocument); break; case ReasonType.incompatible_parameters: reason.Reason = new IncompatibleParameters(jingleIq.OwnerDocument); break; case ReasonType.media_error: reason.Reason = new MediaError(jingleIq.OwnerDocument); break; case ReasonType.security_error: reason.Reason = new SecurityError(jingleIq.OwnerDocument); break; case ReasonType.success: reason.Reason = new Success(jingleIq.OwnerDocument); break; case ReasonType.timeout: reason.Reason = new Timeout(jingleIq.OwnerDocument); break; case ReasonType.unsupported_applications: reason.Reason = new UnsupportedApplications(jingleIq.OwnerDocument); break; case ReasonType.unsupported_transports: reason.Reason = new UnsupportedTransports(jingleIq.OwnerDocument); break; } jingleIq.Instruction.Reason = reason; } this.Stream.Write(jingleIq); }
/// <summary> /// TODO: Documentation SessionTerminate /// </summary> /// <param name="to"></param> /// <param name="sid"></param> /// <param name="reasonType"></param> /// <returns></returns> public void SessionTerminate(JID to, String sid, ReasonType? reasonType) { JingleIQ jingleIq = new JingleIQ(this.Stream.Document); jingleIq.From = this.Stream.JID; jingleIq.To = to; jingleIq.Type = IQType.set; jingleIq.Instruction.Action = ActionType.session_terminate; jingleIq.Instruction.Sid = sid; if (reasonType.HasValue) { JingleReason reason = new JingleReason(jingleIq.OwnerDocument); switch (reasonType) { case ReasonType.alternative_session: reason.Reason = new AlternativeSession(jingleIq.OwnerDocument); break; case ReasonType.busy: reason.Reason = new Busy(jingleIq.OwnerDocument); break; case ReasonType.cancel: reason.Reason = new Cancel(jingleIq.OwnerDocument); break; case ReasonType.connectivity_error: reason.Reason = new ConnectivityError(jingleIq.OwnerDocument); break; case ReasonType.decline: reason.Reason = new JingleDecline(jingleIq.OwnerDocument); break; case ReasonType.expired: reason.Reason = new Expired(jingleIq.OwnerDocument); break; case ReasonType.failed_application: reason.Reason = new FailedApplication(jingleIq.OwnerDocument); break; case ReasonType.failed_transport: reason.Reason = new FailedTransport(jingleIq.OwnerDocument); break; case ReasonType.general_error: reason.Reason = new GeneralError(jingleIq.OwnerDocument); break; case ReasonType.gone: reason.Reason = new Gone(jingleIq.OwnerDocument); break; case ReasonType.incompatible_parameters: reason.Reason = new IncompatibleParameters(jingleIq.OwnerDocument); break; case ReasonType.media_error: reason.Reason = new MediaError(jingleIq.OwnerDocument); break; case ReasonType.security_error: reason.Reason = new SecurityError(jingleIq.OwnerDocument); break; case ReasonType.success: reason.Reason = new Success(jingleIq.OwnerDocument); break; case ReasonType.timeout: reason.Reason = new Timeout(jingleIq.OwnerDocument); break; case ReasonType.unsupported_applications: reason.Reason = new UnsupportedApplications(jingleIq.OwnerDocument); break; case ReasonType.unsupported_transports: reason.Reason = new UnsupportedTransports(jingleIq.OwnerDocument); break; } jingleIq.Instruction.Reason = reason; } this.Stream.Write(jingleIq); }