public AVConnection(AVRenderer _parent, System.String RemoteProtocolInfo, System.String PeerConnectionManager, int PeerConnectionID, DvConnectionManager.Enum_A_ARG_TYPE_Direction Direction, System.Int32 ConnectionID, System.Int32 AVTransportID, System.Int32 RcsID)
        {
            Parent = _parent;
            foreach (string V in DvRenderingControl.Values_A_ARG_TYPE_Channel)
            {
                MuteChannelTable[V]   = false;
                VolumeChannelTable[V] = (UInt16)0;
            }

            _InfoString         = new ProtocolInfoString(RemoteProtocolInfo);
            _PeerManager        = PeerConnectionManager;
            _PeerManagerID      = PeerConnectionID;
            Connection_ID       = ConnectionID;
            AVTransport_ID      = AVTransportID;
            RenderingControl_ID = RcsID;
            _Direction          = Direction;
        }
Exemple #2
0
 public void ConnectionManager_GetCurrentConnectionInfo(System.Int32 ConnectionID, out System.Int32 RcsID, out System.Int32 AVTransportID, out System.String ProtocolInfo, out System.String PeerConnectionManager, out System.Int32 PeerConnectionID, out DvConnectionManager.Enum_A_ARG_TYPE_Direction Direction, out DvConnectionManager.Enum_A_ARG_TYPE_ConnectionStatus Status)
 {
     RcsID                 = 0;
     AVTransportID         = 0;
     ProtocolInfo          = "Sample String";
     PeerConnectionManager = "Sample String";
     PeerConnectionID      = 0;
     Direction             = DvConnectionManager.Enum_A_ARG_TYPE_Direction.INPUT;
     Status                = DvConnectionManager.Enum_A_ARG_TYPE_ConnectionStatus.OK;
     Console.WriteLine("ConnectionManager_GetCurrentConnectionInfo(" + ConnectionID.ToString() + ")");
 }
        public AVConnection(AVRenderer _parent, System.String RemoteProtocolInfo, System.String PeerConnectionManager, int PeerConnectionID, DvConnectionManager.Enum_A_ARG_TYPE_Direction Direction, System.Int32 ConnectionID, System.Int32 AVTransportID, System.Int32 RcsID)
        {
            Parent = _parent;
            foreach(string V in DvRenderingControl.Values_A_ARG_TYPE_Channel)
            {
                MuteChannelTable[V] = false;
                VolumeChannelTable[V] = (UInt16)0;
            }

            _InfoString = new ProtocolInfoString(RemoteProtocolInfo);
            _PeerManager = PeerConnectionManager;
            _PeerManagerID = PeerConnectionID;
            Connection_ID = ConnectionID;
            AVTransport_ID = AVTransportID;
            RenderingControl_ID = RcsID;
            _Direction = Direction;
        }
            /// <summary>
            /// Constructor - requires all of the information before the connection is created.
            /// </summary>
            /// <param name="id"></param>
            /// <param name="peerId"></param>
            /// <param name="rcs"></param>
            /// <param name="avt"></param>
            /// <param name="prot"></param>
            /// <param name="peer"></param>
            /// <param name="dir"></param>
            /// <param name="status"></param>
            /// <exception cref="ApplicationException">
            /// Thrown if the proposed connection ID is less than zero.
            /// </exception>
            public Connection(int id, int peerId, int rcs, int avt, ProtocolInfoString prot, string peer, DvConnectionManager.Enum_A_ARG_TYPE_Direction dir, DvConnectionManager.Enum_A_ARG_TYPE_ConnectionStatus status)
            {
                if (id < 0)
                {
                    throw new ApplicationException("ConnectionId cannot be negative.");
                }

                ConnectionId = id;
                PeerConnectionId = peerId;
                RcsId = rcs;
                AVTransportId = avt;
                ProtocolInfo = prot;
                PeerConnectionManager = peer;
                Direction = dir;
                Status = status;
            }
Exemple #5
0
 protected void GetCurrentConnectionInfoSink(System.Int32 ConnectionID, out System.Int32 RcsID, out System.Int32 AVTransportID, out System.String ProtocolInfo, out System.String PeerConnectionManager, out System.Int32 PeerConnectionID, out DvConnectionManager.Enum_A_ARG_TYPE_Direction Direction, out DvConnectionManager.Enum_A_ARG_TYPE_ConnectionStatus Status)
 {
     if (ID_Table.ContainsKey((UInt32)ConnectionID) == false)
     {
         throw(new UPnPCustomException(802, ConnectionID.ToString() + " is not a valid ID"));
     }
     else
     {
         AVConnection c = (AVConnection)ID_Table[(UInt32)ConnectionID];
         RcsID                 = c.RenderingControl_ID;
         AVTransportID         = c.AVTransport_ID;
         ProtocolInfo          = c.InfoString.ToString();
         PeerConnectionManager = c.PeerConnectionManager;
         PeerConnectionID      = c.PeerConnectionManagerID;
         Direction             = c._Direction;
         Status                = c._Status;
     }
 }
Exemple #6
0
        protected void PrepareForConnectionSink(System.String RemoteProtocolInfo, System.String PeerConnectionManager, int PeerConnectionID, DvConnectionManager.Enum_A_ARG_TYPE_Direction Direction, out System.Int32 ConnectionID, out System.Int32 AVTransportID, out System.Int32 RcsID)
        {
            bool OK = false;

            ConnectionID = 0;
            string EventString = "";

            foreach (ProtocolInfoString s in InfoStrings)
            {
                if (s.Equals(new ProtocolInfoString(RemoteProtocolInfo)))
                {
                    OK = true;
                    break;
                }
            }

            if (OK == false)
            {
                // We don't support this protocol Info;
                throw(new UPnPCustomException(801, RemoteProtocolInfo + " NOT supported"));
            }

            OK = false;
            if (ManualPrepareForConnection != null)
            {
                try
                {
                    ConnectionID = ManualPrepareForConnection(this, new ProtocolInfoString(RemoteProtocolInfo));
                    OK           = true;
                    ID_Table[(UInt32)ConnectionID] = "";
                }
                catch (PrepareForConnectionFailedException pfcfe)
                {
                    throw(new UPnPCustomException(800, pfcfe.Message));
                }
            }

            lock (ConnectionLock)
            {
                if (OK == false)
                {
                    if (CurrentConnections < ConnectionMax)
                    {
                        ++CurrentConnections;
                        Random r = new Random();
                        do
                        {
                            ConnectionID = r.Next(4096, 65535);
                        }while(ID_Table.ContainsKey(ConnectionID) == true);
                        ID_Table[(UInt32)ConnectionID] = "";
                        OK = true;
                    }
                    else
                    {
                        OK = false;
                    }
                }
                if (OK == true)
                {
                    // BuildEventString
                    IDictionaryEnumerator KEYS = ID_Table.GetEnumerator();
                    while (KEYS.MoveNext())
                    {
                        if (EventString == "")
                        {
                            EventString = KEYS.Key.ToString();
                        }
                        else
                        {
                            EventString = EventString + "," + KEYS.Key.ToString();
                        }
                    }
                }
            }

            if (OK == false)
            {
                throw(new UPnPCustomException(800, "No more resources"));
            }

            AVTransportID = (int)ConnectionID;
            RcsID         = (int)ConnectionID;

            AVConnection c = new AVConnection(this, RemoteProtocolInfo, PeerConnectionManager, PeerConnectionID, Direction, ConnectionID, AVTransportID, RcsID);

            c._WhoCreatedMe = AVT.GetCaller();

            ID_Table[(UInt32)ConnectionID] = c;

            Manager.Evented_CurrentConnectionIDs = EventString;

            if (OnNewConnection != null)
            {
                OnNewConnection(this, c);
            }
        }