Exemplo n.º 1
0
        // Send method for operations with callbacks. Store the callback in a queue for retrieval upon completion of server operation.
        private void SendPayload <T>(InterlockedPropertyInfo propInfo, AtomicOperators operation, Action <T> callback, params T[] parameters)
        {
            AtomicPayload payload =
                new AtomicPayload
                (
                    this.Client.ClientId,
                    propInfo.ObjectId,
                    propInfo.Property.Index,
                    propInfo.PropertyType.AssemblyQualifiedName,
                    operation,
                    parameters.Select(p => Json.WriteObject(p)).ToArray()
                );

            // For operations with callbacks, we need to create an async result and queue it up for retrieval when the server operation completes
            if (callback != null)
            {
                var getResult = new SharedAsyncResult <T>(EndSendAtomicPayload <T>, payload.PayloadId, callback);
                this.Client.EnqueueAsyncResult(getResult, payload.PayloadId);
            }

            this.Client.SendPublishEvent(payload);
        }
Exemplo n.º 2
0
 public AtomicPayload(Guid clientId, Guid objectId, short propertyIndex, string type, AtomicOperators atomicOperator, string[] parameters, ushort payloadId)
     : this(clientId, objectId, propertyIndex, type, atomicOperator, parameters)
 {
     this.PayloadId = payloadId;
 }
Exemplo n.º 3
0
        public AtomicPayload(Guid clientId, Guid objectId, short propertyIndex, string type, AtomicOperators atomicOperator, string[] parameters)
            : base(clientId)
        {
            Debug.Assert(parameters.Length <= 2);

            this.AtomicOperator = atomicOperator;
            this.ObjectId = objectId;
            this.PropertyIndex = propertyIndex;
            this.PropertyType = type;
            this.Parameters = parameters;
        }