PageRenderTime 40ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/Overthere/RemoteConsole/RemoteConsoleService.cs

https://bitbucket.org/floAr/personal
C# | 64 lines | 54 code | 10 blank | 0 comment | 0 complexity | ffdc25433bc179ae96aa7d2b7a6f25d4 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Overthere;
  6. using System.ServiceModel;
  7. using Overthere.Interfaces;
  8. using System.Security.Permissions;
  9. using System.Windows.Input;
  10. namespace RemoteConsole
  11. {
  12. [PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
  13. [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
  14. public class RemoteConsoleService : IRemoteConsoleService
  15. {
  16. IConsole _console;
  17. IRemoteConsoleReceiver _outputReceiver;
  18. public RemoteConsoleService()
  19. {
  20. _console = new CmdConsole();
  21. _outputReceiver = OperationContext.Current.GetCallbackChannel<IRemoteConsoleReceiver>();
  22. _console.Output += SendOutput;
  23. _console.Error += SendError;
  24. }
  25. public void Input(string command)
  26. {
  27. _console.Input(command);
  28. }
  29. public string GetCurrentDirectory()
  30. {
  31. return _console.GetCurrentDirectory();
  32. }
  33. public IEnumerable<System.IO.DirectoryInfo> GetDirectories(string directory)
  34. {
  35. return _console.GetDirectories(directory);
  36. }
  37. public IEnumerable<System.IO.FileInfo> GetFiles(string directory)
  38. {
  39. return _console.GetFiles(directory);
  40. }
  41. private void SendOutput(string output)
  42. {
  43. _outputReceiver.OutputCallback(output);
  44. }
  45. private void SendError(string error)
  46. {
  47. _outputReceiver.ErrorCallback(error);
  48. }
  49. public void SendKey(Key key, ModifierKeys modifiers)
  50. {
  51. _console.SendKey(key, modifiers);
  52. }
  53. }
  54. }