示例#1
0
        static void HandleGatewayStatusChanged(string gatewayIP, dwg_port_status_value[] PortsStatus)
        {
            Console.WriteLine("STS CHANGED: gw {0}", gatewayIP);

            for(int i = 0; i < PortsStatus.Length; i++)
                Console.WriteLine("Port#{0}: {1}", i, Enum.GetName(typeof(dwg_port_status_value), (dwg_port_status_value) PortsStatus[i]));
        }
        static unsafe void smsgw_status_changed(IntPtr gwIpPtr, IntPtr statusPtr)
        {
            str_t gwIP = (str_t) Marshal.PtrToStructure(gwIpPtr, typeof(str_t));

            string gw								= strToString(gwIP);
            dwg_ports_status *status = (dwg_ports_status *) statusPtr;
            dwg_port_status_value[] ports_status	= new dwg_port_status_value[status->size];
            _ports									= new Port[status->size];
            _isGwConnected	= true;

            for(int i = 0; i < status->size; i++)
            {
                ports_status[i]	= (dwg_port_status_value) status->status_array[i].status;

                _ports[i] = new Port();
                _ports[i].Status	= ports_status[i];
            }

            _gwIP	= strToString(gwIP);
            _numberOfPorts	= ports_status.Length;

            if (Gateway.StatusChanged != null)
                Gateway.StatusChanged(gw, ports_status);

            if (_gatewayPorts.ContainsKey(gw))
                _gatewayPorts[gw] = ports_status;
            else
                _gatewayPorts.Add(gw, ports_status);
        }