Esempio n. 1
0
        /*****************************************************************************/
        /*                                                                           */
        /*                               private                                     */
        /*                                                                           */
        /*****************************************************************************/

        //struct MqFactoryItemS* const item,
        static private MqErrorE FactoryCreate(IntPtr tmpl, MqFactoryE create, IntPtr item, ref IntPtr contextP)
        {
            try {
                Object[] args = new Object[1];
                args[0] = tmpl != IntPtr.Zero ? MqS.GetSelf(tmpl) : null;
                IntPtr data = MqFactoryItemGetCreateData(item);
                contextP = ((MqS)((ConstructorInfo)GCHandle.FromIntPtr(data).Target).Invoke(args)).context;
            } catch (Exception ex) {
                if (create == MqFactoryE.MQ_FACTORY_NEW_INIT)
                {
                    return(MqErrorE.MQ_ERROR);
                }
                else
                {
                    return(MqS.MqErrorSet2(tmpl, ex));
                }
            }
            if (create != MqFactoryE.MQ_FACTORY_NEW_INIT)
            {
                MqSetupDup(contextP, tmpl);
            }
            return(MqErrorE.MQ_OK);
        }