Exemplo n.º 1
0
        private ReConfigChunk makeSSNResets()
        {
            ReConfigChunk reply = new ReConfigChunk(); // create a new thing
            //logger.LogDebug($"SCTP closing {listOfStreamsToReset.Count} stream.");
            List <int> streamsL = new List <int>();

            lock (listOfStreamsToReset)
            {
                foreach (var s in listOfStreamsToReset)
                {
                    if (s.InboundIsOpen())
                    {
                        streamsL.Add(s.getNum());
                    }
                }
            }

            int[] streams = streamsL.ToArray();
            if (streams.Length > 0)
            {
                OutgoingSSNResetRequestParameter rep =
                    new OutgoingSSNResetRequestParameter(nextNearNo(), farSeqno - 1, assoc.getNearTSN());
                rep.setStreams(streams);
                reply.addParam(rep);
            }

            streamsL.Clear();
            lock (listOfStreamsToReset)
            {
                foreach (var s in listOfStreamsToReset)
                {
                    if (s.OutboundIsOpen())
                    {
                        streamsL.Add(s.getNum());
                    }
                }
            }

            streams = streamsL.ToArray();
            if (streams.Length > 0)
            {
                IncomingSSNResetRequestParameter rep = new IncomingSSNResetRequestParameter(nextNearNo());
                rep.setStreams(streams);
                reply.addParam(rep);
            }

            //logger.LogDebug("reconfig chunk is " + reply.ToString());
            return(reply);
        }