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

/base/Applications/Network/HostName/HostName.cs

#
C# | 103 lines | 76 code | 16 blank | 11 comment | 6 complexity | 71d45d86e7718058cd3fd65618af1bbb MD5 | raw file
  1. ////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Microsoft Research Singularity
  4. //
  5. // Copyright (c) Microsoft Corporation. All rights reserved.
  6. //
  7. // Note: Simple Singularity test program.
  8. //
  9. using System;
  10. using System.Diagnostics;
  11. using System.Net.IP;
  12. using Microsoft.Singularity;
  13. using Microsoft.Singularity.Channels;
  14. using Microsoft.Singularity.Directory;
  15. using NetStack.Contracts;
  16. using NetStack.Channels.Public;
  17. using Microsoft.Contracts;
  18. using Microsoft.SingSharp.Reflection;
  19. using Microsoft.Singularity.Applications;
  20. using Microsoft.Singularity.Io;
  21. using Microsoft.Singularity.Configuration;
  22. [assembly: Transform(typeof(ApplicationResourceTransform))]
  23. namespace Microsoft.Singularity.Applications.Network
  24. {
  25. [ConsoleCategory(HelpMessage="Change network routing information", DefaultAction=true)]
  26. internal class Parameters {
  27. [InputEndpoint("data")]
  28. public readonly TRef<UnicodePipeContract.Exp:READY> Stdin;
  29. [OutputEndpoint("data")]
  30. public readonly TRef<UnicodePipeContract.Imp:READY> Stdout;
  31. [Endpoint]
  32. public readonly TRef<IPContract.Imp:Start> ipRef;
  33. [StringParameter( "n", Default=null, HelpMessage="new host name")]
  34. internal string name;
  35. reflective internal Parameters();
  36. internal int AppMain() {
  37. HostName.AppMain(this);
  38. return 0;
  39. }
  40. }
  41. /// <summary>
  42. /// Class for configuring Host Name.
  43. /// </summary>
  44. public class HostName
  45. {
  46. internal static int AppMain(Parameters! config)
  47. {
  48. IPContract.Imp ipConn = ((!)config.ipRef).Acquire();
  49. if (ipConn == null) {
  50. Console.WriteLine("Could not initialize IP endpoint.");
  51. return 1;
  52. }
  53. ipConn.RecvReady();
  54. try {
  55. if (config.name == null) {
  56. char[]! in ExHeap repHost, repDomain;
  57. ipConn.SendGetHostName();
  58. ipConn.RecvHostName(out repHost);
  59. ipConn.SendGetDomainName();
  60. ipConn.RecvDomainName(out repDomain);
  61. Console.WriteLine("{0}.{1}", Bitter.ToString(repHost), Bitter.ToString(repDomain));
  62. delete repHost;
  63. delete repDomain;
  64. return 0; // success
  65. }
  66. else {
  67. ipConn.SendSetHostName(Bitter.FromString2(config.name));
  68. switch receive {
  69. case ipConn.Err() :
  70. Console.WriteLine("Failure setting host name \"{0}\"", config.name);
  71. return 1; // failure;
  72. case ipConn.OK() :
  73. Console.WriteLine("Success setting host name");
  74. break;
  75. case ipConn.ChannelClosed() :
  76. Console.WriteLine("Failure setting host name \"{0}\" (channel closed)", config.name);
  77. return 1; // failure;
  78. }
  79. }
  80. }
  81. finally {
  82. delete ipConn;
  83. }
  84. return 0; // success
  85. }
  86. } // end class HostName
  87. }