示例#1
0
        /// <summary>
        /// Der Einsprungpunkt für einen <i>Card Server</i>. Die Befehlszeilenparameter beschreiben
        /// die Kommunikationskanäle zum steuernden Client.
        /// </summary>
        /// <param name="args">Befehlsparameter für die Kommunikation.</param>
        public static void Main(string[] args)
        {
            // Be safe
            try
            {
                // Always use the configured language
                UserProfile.ApplyLanguage();

                // Set priority
                Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;

                // Open the communication channels and attach to the pipe server
                using (AnonymousPipeClientStream reader = new AnonymousPipeClientStream(PipeDirection.In, args[0]))
                    using (AnonymousPipeClientStream writer = new AnonymousPipeClientStream(PipeDirection.Out, args[1]))
                        using (ServerImplementation server = ServerImplementation.CreateInMemory())
                            for (Request request; null != (request = Request.ReceiveRequest(reader));)
                            {
                                // Process it
                                Response response = request.Execute(server);

                                // Send the response
                                response.SendResponse(writer);
                            }
            }
            catch (Exception e)
            {
                // Report error
                Logging.Log(EventLogEntryType.Error, e.ToString());
            }
        }
示例#2
0
            /// <summary>
            /// Erzeugt eine neue Steuerung.
            /// </summary>
            /// <param name="server">Die zu steuernde Einheit.</param>
            /// <exception cref="ArgumentNullException">Es wurde keine Steuerinstanz angegeben.</exception>
            public _AsyncControl(ServerImplementation server)
            {
                // Validate
                if (server == null)
                {
                    throw new ArgumentNullException("server");
                }

                // Remember
                m_Server = server;
            }
示例#3
0
 /// <summary>
 /// Erzeugt eine neue Steuerinstanz.
 /// </summary>
 /// <typeparam name="T">Die Art des Rückgabewertes.</typeparam>
 /// <param name="server">Die aktuelle Implementierung.</param>
 /// <returns>Die gewünschte Steuerinstanz.</returns>
 public static IAsyncResult Create <T>(ServerImplementation server)
 {
     // Check mode
     if (typeof(T) == typeof(object))
     {
         return(new _AsyncControl(server));
     }
     else
     {
         return(new _AsyncControl <T>(server));
     }
 }
示例#4
0
        /// <summary>
        /// Initialisiert eine neue Instanz.
        /// </summary>
        /// <param name="cardServer">Der zugehörige <i>Card Server</i>.</param>
        /// <exception cref="ArgumentNullException">Es wurde keine Instanz angegeben.</exception>
        protected CustomAction(ServerImplementation cardServer)
        {
            // Validate
            if (cardServer == null)
            {
                throw new ArgumentNullException("cardServer");
            }

            // Remember
            m_CardServer = cardServer;

            // Register for operation
            m_CardServer.LoadExtension(GetType());
        }
示例#5
0
        /// <summary>
        /// Wählt eine bestimmte Quellgruppe (Transponder) an.
        /// </summary>
        /// <param name="server">Die Implementierung einer Geräteansteuerung.</param>
        /// <param name="selection">Die Beschreibung einer Quelle, deren Gruppe aktiviert werden soll.</param>
        /// <returns>Steuereinheit für diesen Aufruf.</returns>
        /// <exception cref="NullReferenceException">Es wurde keine Implementierung angegeben.</exception>
        /// <exception cref="ArgumentNullException">Es wurde keine Quellgruppe angegeben.</exception>
        /// <exception cref="CardServerException">Es wird bereits eine Anfrage ausgeführt.</exception>
        public static IAsyncResult BeginSelect(this ServerImplementation server, SourceSelection selection)
        {
            // Validate
            if (server == null)
            {
                throw new NullReferenceException("server");
            }
            if (selection == null)
            {
                throw new ArgumentNullException("selection");
            }

            // Forward
            return(server.BeginSelect(selection.SelectionKey));
        }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginEndScan(UpdateProfile));
 }
示例#7
0
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginSetStreamTarget(Source, UniqueIdentifier, Target));
 }
示例#8
0
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 /// <returns>Die Antwort zur Anfrage.</returns>
 public abstract Response Execute(ServerImplementation server);
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response <TOutput> response, ServerImplementation server)
 {
     // Execute
     response.ResponseData = server.BeginCustomAction <TInput, TOutput>(ActionType, Parameters).Result;
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginLoadExtensions(AssemblyData, DebugData));
 }
示例#11
0
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response <ServerInformation> response, ServerImplementation server)
 {
     // Execute
     response.ResponseData = server.BeginSetZappingSource(SelectionKey, Target).Result;
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginRemoveSource(Source, UniqueIdentifier));
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response <ProgramGuideItem[]> response, ServerImplementation server)
 {
     // Execute
     response.ResponseData = server.BeginEndEPGCollection().Result;
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginStartScan());
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginStartEPGCollection(Sources, Extensions));
 }
示例#16
0
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginSetProfile(ProfileName, ResetWakeUpDevice, DisablePCRFromH264Reconstruction, DisablePCRFromMPEG2Reconstruction));
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginRemoveAllSources());
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response <StreamInformation[]> response, ServerImplementation server)
 {
     // Execute
     response.ResponseData = server.BeginAddSources(Sources).Result;
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response response, ServerImplementation server)
 {
     // Execute
     ServerImplementation.EndRequest(server.BeginSelect(SelectionKey));
 }
 /// <summary>
 /// Führt eine Anfrage aus.
 /// </summary>
 /// <param name="response">Die zu befüllende Antwort für den Aufrufer.</param>
 /// <param name="server">Die aktuelle Implementierung des <i>Card Servers</i>.</param>
 protected override void OnExecute(Response <ServerInformation> response, ServerImplementation server)
 {
     // Execute
     response.ResponseData = server.BeginGetState().Result;
 }