Exemple #1
0
        public override int ClassMetadataIdForName(string name)
        {
            MsgD msg = Msg.ClassMetadataIdForName.GetWriterForString(SystemTransaction(), name
                                                                     );

            msg.Write(_socket);
            MsgD response = (MsgD)ExpectedResponse(Msg.ClassId);

            return(response.ReadInt());
        }
Exemple #2
0
        /// <exception cref="System.IO.IOException"></exception>
        internal virtual Socket4Adapter CreateParallelSocket()
        {
            Write(Msg.GetThreadId);
            int            serverThreadID = ExpectedBufferResponse(Msg.IdList).ReadInt();
            Socket4Adapter sock           = _socket.OpenParalellSocket();

            LoginToServer(sock);
            if (switchedToFile != null)
            {
                MsgD message = Msg.SwitchToFile.GetWriterForString(SystemTransaction(), switchedToFile
                                                                   );
                message.Write(sock);
                if (!(Msg.Ok.Equals(Msg.ReadMessage(this, SystemTransaction(), sock))))
                {
                    throw new IOException(Db4objects.Db4o.Internal.Messages.Get(42));
                }
            }
            Msg.UseTransaction.GetWriterForInt(_transaction, serverThreadID).Write(sock);
            return(sock);
        }
Exemple #3
0
        /// <exception cref="Db4objects.Db4o.Ext.InvalidPasswordException"></exception>
        private void LoginToServer(Socket4Adapter iSocket)
        {
            UnicodeStringIO stringWriter = new UnicodeStringIO();
            int             length       = stringWriter.Length(_userName) + stringWriter.Length(_password);
            MsgD            message      = Msg.Login.GetWriterForLength(SystemTransaction(), length);

            message.WriteString(_userName);
            message.WriteString(_password);
            message.Write(iSocket);
            Msg             msg     = ReadLoginMessage(iSocket);
            ByteArrayBuffer payLoad = msg.PayLoad();

            BlockSize(payLoad.ReadInt());
            int doEncrypt = payLoad.ReadInt();

            if (doEncrypt == 0)
            {
                _handlers.OldEncryptionOff();
            }
            if (payLoad.RemainingByteCount() > 0)
            {
                _serverSideID = payLoad.ReadInt();
            }
        }