Esempio n. 1
0
        internal void SyncNow()
        {
            foreach (var one in properties)
            {
                Object c;
                if (!stringToObject.TryGetValue(one.Key, out c))
                {
                    continue;
                }

                string      method = getSyncMethod(c);
                DataStorage ds     = DataStorage.CreateForWrite();
                ds.Push(method);
                var fields = GetClassFields(c);
                if (fields.Count == 0)
                {
                    continue;
                }
                foreach (var field in fields)
                {
                    ds.Push(field.Key);
                    IMarshalable imObj = field.Value as IMarshalable;
                    if (imObj != null)
                    {
                        pushCustomType(imObj, ds);
                        continue;
                    }
                    pushBasicType(field.Value, ds);
                }
                NetworkController.Instance.SendMessage(ds, (short)MessageType.Resend);
            }
        }
 /// <summary>
 /// Send a Rdprfx message.
 /// </summary>
 /// <param name="rfxMessage">The Rdprfx message to be sent.</param>
 private void AddToPendingList(IMarshalable rfxMessage)
 {
     lock (syncLocker)
     {
         byte[] data = rfxMessage.ToBytes();
         pendingBuffer.AddRange(data);
     }
 }
        public Task AcceptProxyAsync(IMarshalable marshalable, bool dispose = true)
        {
            this.ReceivedProxy = marshalable;
            if (dispose)
            {
                marshalable.Dispose();
            }

            return(Task.CompletedTask);
        }
Esempio n. 4
0
        private void pushCustomType(IMarshalable obj, DataStorage ds)
        {
            IMarshalable imObj = obj as IMarshalable;

            if (imObj == null)
            {
                NetworkController.ShowException(new Exception("invalid rpc parameter"));
            }

            ds.Push(obj.GetType().FullName, imObj);
        }
 /// <summary>
 /// Add a Rdprfx message data into byte list.
 /// </summary>
 private void AddToPendingList(IMarshalable rfxMessage)
 {
     lock (syncLocker)
     {
         byte[] data = rfxMessage.ToBytes();
         pendingRfxBuffer.AddRange(data);
     }
 }
Esempio n. 6
0
 private object parseCustomType(IMarshalable obj, DataStorage ds)
 {
     obj.ReadFromDs(ds);
     return(obj);
 }
Esempio n. 7
0
 public Task GiveMarshalable(IMarshalable marshalable)
 {
     marshalable.DoSomething();
     return(Task.CompletedTask);
 }