示例#1
0
        // Добавим ссылку на объект на сервере в буффер
        // И если в буфере количество больше заданного
        // То отсылается массив ссылок, а буфуе очищается
        // Сделано, для ускорения действи при межпроцессном взаимодействии
        public void DeleteObject(AutoWrapClient Object)
        {
            //if (ServerIsClosed) return;

            lock (_syncForDelete)
            {
                _deletedObjects.Add(Object.Target);
                if (_deletedObjects.Count > _countDeletedObjects)
                {
                    SendDeleteObjects();
                }
            }
        }
示例#2
0
        public AutoWapEnumerator(AutoWrapClient target, TcpConnector connector)
        {
            _connector = connector;

            if (!AutoWrapClient.TryInvokeMember(
                    0,
                    "GetIterator",
                    new object[] { target },
                    out var result,
                    _connector
                    ))
            {
                throw new Exception(_connector.LastError);
            }

            _enumerator = (AutoWrapClient)result;
        }
示例#3
0
        // Отсылаем массив ссылок для удаления их из зранилища объектов на сервере
        private void SendDeleteObjects()
        {
            var ms = new MemoryStream();
            var bw = new BinaryWriter(ms);

            bw.Write((byte)CallMethod.DeleteObjects);
            bw.Write(_deletedObjects.Count);

            foreach (var i in _deletedObjects)
            {
                bw.Write(i);
            }
            bw.Flush();

            _deletedObjects.Clear();
            var res = SendMessage(ms);

            object result = null;

            if (!AutoWrapClient.GetResult(res, ref result, this))
            {
                throw new Exception(LastError);
            }
        }