Esempio n. 1
0
        internal static int AppMain(Parameters !config)
        {
            IPContract.Imp ipConn = ((!)config.ipRef).Acquire();
            if (ipConn == null)
            {
                Console.WriteLine("Could not initialize IP endpoint.");
                return(1);
            }
            ipConn.RecvReady();

            try {
                if (config.name == null)
                {
                    char[] !in ExHeap repHost, repDomain;
                    ipConn.SendGetHostName();
                    ipConn.RecvHostName(out repHost);

                    ipConn.SendGetDomainName();
                    ipConn.RecvDomainName(out repDomain);

                    Console.WriteLine("{0}.{1}", Bitter.ToString(repHost), Bitter.ToString(repDomain));
                    delete repHost;
                    delete repDomain;
                    return(0); // success
                }
                else
                {
                    ipConn.SendSetHostName(Bitter.FromString2(config.name));

                    switch receive {
                    case ipConn.Err():
                        Console.WriteLine("Failure setting host name \"{0}\"", config.name);
                        return(1);    // failure;

                    case ipConn.OK():
                        Console.WriteLine("Success setting host name");
                        break;

                    case ipConn.ChannelClosed():
                        Console.WriteLine("Failure setting host name \"{0}\" (channel closed)", config.name);
                        return(1);    // failure;
                    }
                }
            }
            finally {
                delete ipConn;
            }

            return(0); // success
        }
Esempio n. 2
0
        internal static int DefaultMain(DefaultConfig !config)
        {
            IPContract.Imp ipConn = ((!)config.ipRef).Acquire();
            if (ipConn == null)
            {
                throw new Exception("Unable to acquire handle to the IP network");
            }
            ipConn.RecvReady();


            char[][] !in ExHeap ifNames;
            ipConn.SendGetInterfaces();
            ipConn.RecvInterfaceList(out ifNames);

            for (int i = 0; i < ifNames.Length; ++i)
            {
                CustomVector.Expose(ifNames, i);
                char[] in ExHeap ifName = ifNames[i];
                if (ifName == null)
                {
                    throw new Exception("ifName is null");
                }
                string !deviceName = Bitter.ToString2(ifName);
                CustomVector.UnExpose(ifNames, i);
                ipConn.SendGetInterfaceState(Bitter.FromString2(deviceName));
                switch receive {
                case ipConn.InterfaceNotFound():
                    Console.WriteLine("Unexpected error");
                    break;

                case ipConn.InterfaceState(InterfaceInfo ifInfo):
                    WriteInterfaceLine(ifInfo, deviceName);
                    break;

                case ipConn.ChannelClosed():
                    throw new Exception("ipConn channel closed");
                }
            }

            delete ifNames;
            delete ipConn;

            return(0);
        }