Beispiel #1
0
        internal virtual BlobImpl ServerGetBlobImpl()
        {
            BlobImpl blobImpl = null;
            var      id       = _payLoad.ReadInt();

            lock (ContainerLock())
            {
                blobImpl = (BlobImpl)Container().GetByID(Transaction(), id);
                Container().Activate(Transaction(), blobImpl, new FixedActivationDepth(3));
            }
            return(blobImpl);
        }
Beispiel #2
0
        /// <exception cref="System.IO.IOException"></exception>
        public virtual void ReadBlobFrom(Transaction trans, BlobImpl blob)
        {
            MsgBlob msg = null;

            lock (Lock())
            {
                Store(blob);
                int id = (int)GetID(blob);
                msg       = (MsgBlob)Msg.WriteBlob.GetWriterForInt(trans, id);
                msg._blob = blob;
                blob.SetStatus(Status.Queued);
            }
            ProcessBlobMessage(msg);
        }
Beispiel #3
0
 public virtual void ProcessAtServer()
 {
     try
     {
         BlobImpl blobImpl = this.ServerGetBlobImpl();
         if (blobImpl != null)
         {
             blobImpl.SetTrans(Transaction());
             Sharpen.IO.File file = blobImpl.ServerFile(null, true);
             Socket4Adapter  sock = ServerMessageDispatcher().Socket();
             Msg.Ok.Write(sock);
             FileOutputStream fout = new FileOutputStream(file);
             Copy(sock, fout, blobImpl.GetLength(), false);
             Msg.Ok.Write(sock);
         }
     }
     catch (Exception)
     {
     }
 }
Beispiel #4
0
 public virtual void ProcessAtServer()
 {
     try
     {
         BlobImpl blobImpl = this.ServerGetBlobImpl();
         if (blobImpl != null)
         {
             blobImpl.SetTrans(Transaction());
             Sharpen.IO.File file   = blobImpl.ServerFile(null, false);
             int             length = (int)file.Length();
             Socket4Adapter  sock   = ServerMessageDispatcher().Socket();
             Msg.Length.GetWriterForInt(Transaction(), length).Write(sock);
             FileInputStream fin = new FileInputStream(file);
             Copy(fin, sock, false);
             sock.Flush();
             Msg.Ok.Write(sock);
         }
     }
     catch (Exception)
     {
         Write(Msg.Error);
     }
 }