예제 #1
0
        /// <exception cref="System.IO.IOException"></exception>
        public override void ProcessClient(Socket4Adapter sock)
        {
            Msg message = Msg.ReadMessage(MessageDispatcher(), Transaction(), sock);

            if (message.Equals(Msg.Length))
            {
                try
                {
                    _currentByte = 0;
                    _length      = message.PayLoad().ReadInt();
                    _blob.GetStatusFrom(this);
                    _blob.SetStatus(Status.Processing);
                    Copy(sock, this._blob.GetClientOutputStream(), _length, true);
                    message = Msg.ReadMessage(MessageDispatcher(), Transaction(), sock);
                    if (message.Equals(Msg.Ok))
                    {
                        this._blob.SetStatus(Status.Completed);
                    }
                    else
                    {
                        this._blob.SetStatus(Status.Error);
                    }
                }
                catch (Exception)
                {
                }
            }
            else
            {
                if (message.Equals(Msg.Error))
                {
                    this._blob.SetStatus(Status.Error);
                }
            }
        }
예제 #2
0
        /// <exception cref="System.IO.IOException"></exception>
        public override void ProcessClient(Socket4Adapter sock)
        {
            Msg message = Msg.ReadMessage(MessageDispatcher(), Transaction(), sock);

            if (message.Equals(Msg.Ok))
            {
                try
                {
                    _currentByte = 0;
                    _length      = this._blob.GetLength();
                    _blob.GetStatusFrom(this);
                    _blob.SetStatus(Status.Processing);
                    FileInputStream inBlob = this._blob.GetClientInputStream();
                    Copy(inBlob, sock, true);
                    sock.Flush();
                    message = Msg.ReadMessage(MessageDispatcher(), Transaction(), sock);
                    if (message.Equals(Msg.Ok))
                    {
                        // make sure to load the filename to i_blob
                        // to allow client databasefile switching
                        Container().Deactivate(Transaction(), _blob, int.MaxValue);
                        Container().Activate(Transaction(), _blob, new FullActivationDepth());
                        this._blob.SetStatus(Status.Completed);
                    }
                    else
                    {
                        this._blob.SetStatus(Status.Error);
                    }
                }
                catch (Exception e)
                {
                    Sharpen.Runtime.PrintStackTrace(e);
                }
            }
        }
예제 #3
0
		public Msg ExpectedResponse(Msg expectedMessage)
		{
			Msg message = GetResponse();
			if (expectedMessage.Equals(message))
			{
				return message;
			}
			CheckExceptionMessage(message);
			throw new InvalidOperationException("Unexpected Message:" + message + "  Expected:"
				 + expectedMessage);
		}