/Overthere/RemoteConsole/RemoteConsoleService.cs
C# | 64 lines | 54 code | 10 blank | 0 comment | 0 complexity | ffdc25433bc179ae96aa7d2b7a6f25d4 MD5 | raw file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Overthere;
- using System.ServiceModel;
- using Overthere.Interfaces;
- using System.Security.Permissions;
- using System.Windows.Input;
-
- namespace RemoteConsole
- {
- [PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
- [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
- public class RemoteConsoleService : IRemoteConsoleService
- {
- IConsole _console;
- IRemoteConsoleReceiver _outputReceiver;
-
- public RemoteConsoleService()
- {
- _console = new CmdConsole();
- _outputReceiver = OperationContext.Current.GetCallbackChannel<IRemoteConsoleReceiver>();
-
- _console.Output += SendOutput;
- _console.Error += SendError;
- }
-
- public void Input(string command)
- {
- _console.Input(command);
- }
-
- public string GetCurrentDirectory()
- {
- return _console.GetCurrentDirectory();
- }
-
- public IEnumerable<System.IO.DirectoryInfo> GetDirectories(string directory)
- {
- return _console.GetDirectories(directory);
- }
-
- public IEnumerable<System.IO.FileInfo> GetFiles(string directory)
- {
- return _console.GetFiles(directory);
- }
-
- private void SendOutput(string output)
- {
- _outputReceiver.OutputCallback(output);
- }
-
- private void SendError(string error)
- {
- _outputReceiver.ErrorCallback(error);
- }
-
- public void SendKey(Key key, ModifierKeys modifiers)
- {
- _console.SendKey(key, modifiers);
- }
- }
- }