Beispiel #1
0
            public static long oHpiHandlerCreate(
                long SessionId,
                oHpiHandlerConfigT HandlerConfig,
                out long HandlerId
                )
            {
                long rv;
                bool rc;

                HandlerId = HpiConst.SAHPI_LAST_ENTRY;

                rc = OhpiUtil.Check(HandlerConfig);
                if (!rc)
                {
                    return(HpiConst.SA_ERR_HPI_INVALID_PARAMS);
                }

                HpiSession s = HpiCore.GetSession(SessionId);

                if (s == null)
                {
                    return(HpiConst.SA_ERR_HPI_INVALID_SESSION);
                }
                OhpiMarshal m = s.GetMarshal();

                if (m == null)
                {
                    return(HpiConst.SA_ERR_HPI_NO_RESPONSE);
                }

                m.MarshalSaHpiSessionIdT(s.GetRemoteSid());
                m.MarshaloHpiHandlerConfigT(HandlerConfig);
                rc = m.Interchange(OhpiConst.RPC_OHPI_HANDLER_CREATE);
                if (!rc)
                {
                    m.Close();
                    return(HpiConst.SA_ERR_HPI_NO_RESPONSE);
                }
                rv = m.DemarshalSaErrorT();
                if (rv == HpiConst.SA_OK)
                {
                    HandlerId = m.DemarshaloHpiHandlerIdT();
                }
                s.PutMarshal(m);

                return(rv);
            }
Beispiel #2
0
    public static void Main()
    {
        long rv;
        long sid;

        rv = Api.saHpiSessionOpen(HpiConst.SAHPI_UNSPECIFIED_DOMAIN_ID, out sid, null);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionOpen: {0}", rv);
            return;
        }

        long last_hid = HpiConst.SAHPI_LAST_ENTRY;

        // List all handlers
        ASCIIEncoding ascii = new ASCIIEncoding();

        foreach (long hid in OhpiIterators.HandlerIds(sid))
        {
            last_hid = hid;
            Console.WriteLine("Handler {0}", hid);
            oHpiHandlerInfoT   hinfo;
            oHpiHandlerConfigT hconf;
            rv = Api.oHpiHandlerInfo(sid, hid, out hinfo, out hconf);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerInfo: {0}", rv);
                continue;
            }
            Console.WriteLine(" Info");
            Console.WriteLine("  id {0}", hinfo.id);
            Console.WriteLine("  name {0}", ascii.GetString(hinfo.plugin_name));
            Console.WriteLine("  entity_root {0}", HpiUtil.FromSaHpiEntityPathT(hinfo.entity_root));
            Console.WriteLine("  load_failed {0}", hinfo.load_failed);
            Console.WriteLine(" Config");
            foreach (var kv in OhpiUtil.FromoHpiHandlerConfigT(hconf))
            {
                Console.WriteLine("  {0} = {1}", kv.Key, kv.Value);
            }
        }

        // Retry last handler
        if (last_hid != HpiConst.SAHPI_LAST_ENTRY)
        {
            Console.WriteLine("Re-trying last handler: {0}", last_hid);
            rv = Api.oHpiHandlerRetry(sid, last_hid);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerRetry: {0}", rv);
            }
        }

        // Destroy last handler
        if (last_hid != HpiConst.SAHPI_LAST_ENTRY)
        {
            Console.WriteLine("Destroying last handler: {0}", last_hid);
            rv = Api.oHpiHandlerDestroy(sid, last_hid);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerDestroy: {0}", rv);
            }
        }

        // Look for handler providing specified resource
        {
            long hid = HpiConst.SAHPI_LAST_ENTRY;
            long rid = 5;
            rv = Api.oHpiHandlerFind(sid, rid, out hid);
            if (rv != HpiConst.SA_OK)
            {
                Console.WriteLine("Error: oHpiHandlerFind: {0}", rv);
            }
            if (hid != HpiConst.SAHPI_LAST_ENTRY)
            {
                Console.WriteLine("Resource {0} is provided by handler {1}", rid, hid);
            }
        }

        // Create new instance of test_agent plugin
        {
            Console.WriteLine("Creating new handler");
            var d = new Dictionary <String, String>
            {
                { "plugin", "libtest_agent" },
                { "port", "9999" }
            };
            var  hconf = OhpiUtil.TooHpiHandlerConfigT(d);
            long hid;
            rv = Api.oHpiHandlerCreate(sid, hconf, out hid);
            if (rv == HpiConst.SA_OK)
            {
                Console.WriteLine("Created handler {0}", hid);
            }
            else
            {
                Console.WriteLine("Error: oHpiHandlerCreate: {0}", rv);
            }
        }

        rv = Api.saHpiSessionClose(sid);
        if (rv != HpiConst.SA_OK)
        {
            Console.WriteLine("Error: saHpiSessionClose: {0}", rv);
            return;
        }
    }