Exemple #1
0
        internal Proxy_Event ToProxy()
        {
            Proxy_Event result = new Proxy_Event();

            result.id = id.ToString();
            return(result);
        }
Exemple #2
0
        public override string SaveChanges(Session session, string opaqueRef, Event serverObject)
        {
            Event server = serverObject;

            if (opaqueRef == null)
            {
                Proxy_Event p = this.ToProxy();
                throw new InvalidOperationException("There is no constructor available for this type; you cannot directly create one on the server.");
            }
            else
            {
                if (!_id.Equals(server._id))
                {
                    Event.set_id(session, opaqueRef, _id);
                }

                return(null);
            }
        }
        /// <summary>
        /// Returns null if we get an event we're not interested in, or an unparseable event (e.g. for an object type we don't know about).
        /// </summary>
        /// <param name="proxyEvent"></param>
        /// <returns></returns>
        private static ObjectChange ProcessEvent(Proxy_Event proxyEvent)
        {
            switch (proxyEvent.class_.ToLowerInvariant())
            {
            case "session":
            case "event":
            case "vtpm":
            case "user":
            case "secret":
                // We don't track events on these objects
                return(null);

            default:
                Type typ = Marshalling.GetXenAPIType(proxyEvent.class_);

                if (typ == null)
                {
                    log.DebugFormat("Unknown {0} event for class {1}.", proxyEvent.operation, proxyEvent.class_);
                    return(null);
                }

                switch (proxyEvent.operation)
                {
                case "add":
                case "mod":
                    return(new ObjectChange(typ, proxyEvent.opaqueRef, Marshalling.convertStruct(typ, (Hashtable)proxyEvent.snapshot)));

                case "del":
                    return(new ObjectChange(typ, proxyEvent.opaqueRef, null));

                default:
                    log.DebugFormat("Unknown event operation {0} for opaque ref {1}", proxyEvent.operation, proxyEvent.opaqueRef);
                    return(null);
                }
            }
        }
Exemple #4
0
 internal void UpdateFromProxy(Proxy_Event proxy)
 {
     id = long.Parse(proxy.id);
 }
Exemple #5
0
 internal Event(Proxy_Event proxy)
 {
     this.UpdateFromProxy(proxy);
 }
Exemple #6
0
 internal Event(Proxy_Event proxy)
 {
     UpdateFrom(proxy);
 }
        /// <summary>
        /// Returns null if we get an event we're not interested in, or an unparseable event (e.g. for an object type we don't know about).
        /// </summary>
        /// <param name="proxyEvent"></param>
        /// <returns></returns>
        private static ObjectChange ProcessEvent(Proxy_Event proxyEvent)
        {
            switch (proxyEvent.class_.ToLowerInvariant())
            {
                case "session":
                case "event":
                case "vtpm":
                case "user":
                case "secret":
                    // We don't track events on these objects
                    return null;

                default:
                    Type typ = Marshalling.GetXenAPIType(proxyEvent.class_);

                    if (typ == null)
                    {
                        log.DebugFormat("Unknown {0} event for class {1}.", proxyEvent.operation, proxyEvent.class_);
                        return null;
                    }

                    switch (proxyEvent.operation)
                    {
                        case "add":
                        case "mod":
                            return new ObjectChange(typ, proxyEvent.opaqueRef, Marshalling.convertStruct(typ, (Hashtable)proxyEvent.snapshot));
                        case "del":
                            return new ObjectChange(typ, proxyEvent.opaqueRef, null);

                        default:
                            log.DebugFormat("Unknown event operation {0} for opaque ref {1}", proxyEvent.operation, proxyEvent.opaqueRef);
                            return null;
                    }
            }
        }
Exemple #8
0
 public static Proxy_Event MakeProxyEvent(string typeName, string opaqueRef, string operation, Type ProxyT, object proxy)
 {
     Proxy_Event ev = new Proxy_Event();
     ev.class_ = typeName;
     ev.opaqueRef = opaqueRef;
     ev.operation = operation;
     ev.snapshot = ProxyToHashtable(ProxyT, proxy);
     return ev;
 }