public AyudanteStream(IContratoDeServicioCliente participante, string nombreNodo, CompartirStreamHandler stream)
        {
            mNombreNodo     = nombreNodo;
            estadoStream    = EstadoStream.Inicial;
            mTrozo          = 0;
            mUltimoTrozo    = -1;
            compartirStream = stream;

            mTimer = new Timer(new TimerCallback(Vigilante));
            mTimer.Change(0, 20000);
        }
        public void Vigilante(object state)
        {
            if (estadoStream == EstadoStream.Procesando)
            {
                if (mTrozo == mUltimoTrozo)
                {
                    estadoStream = EstadoStream.Inicial;

                    if (null != mTimeoutRecibidoChanged)
                    {
                        mTimeoutRecibidoChanged(this, new EventArgs());
                    }
                }
                else
                {
                    mUltimoTrozo = mTrozo;
                }
            }
        }
        public void CompartirStream(StreamPacket sp)
        {
            switch (estadoStream)
            {
            case EstadoStream.Inicial:
                estadoStream = EstadoStream.Procesando;
                mUltimoTrozo = -1;
                break;

            case EstadoStream.Procesando:
                mTrozo = sp.numPacket;

                if (sp.esFinalDeStream)
                {
                    estadoStream = EstadoStream.Inicial;
                }
                break;
            }
            if (null != StreamChanged)
            {
                StreamChanged(this, new StreamChangedEventArgs(sp));
            }
        }