void TransparentStreamReadRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamReadRequestMessage request = (TransparentStreamReadRequestMessage)transparentStreamMessageBase;

            byte[] buffer = new byte[request.Count];
            try {
                baseStream.BeginRead(buffer, 0, request.Count, (ar) => {
                    try {
                        int bytesRead = baseStream.EndRead(ar);
                        if (bytesRead != ((byte[])ar.AsyncState).Length)
                        {
                            byte[] newBuffer = new byte[bytesRead];
                            System.Buffer.BlockCopy((byte[])ar.AsyncState, 0, newBuffer, 0, bytesRead);
                            objectBusSession.SendMessage(new TransparentStreamReadResponseMessage(streamID, request.ID, newBuffer, null));
                        }
                        else
                        {
                            objectBusSession.SendMessage(new TransparentStreamReadResponseMessage(streamID, request.ID, (byte[])ar.AsyncState, null));
                        }
                    } catch (Exception ex) {
                        objectBusSession.SendMessage(new TransparentStreamReadResponseMessage(streamID, request.ID, (byte[])ar.AsyncState, ex));
                    }
                }, buffer);
            } catch (Exception ex) {
                objectBusSession.SendMessage(new TransparentStreamReadResponseMessage(streamID, request.ID, null, ex));
            }
        }
 internal void Set(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     response = transparentStreamMessageBase;
     waitHandle.Set();
     if (callback != null)
     {
         callback(this);
     }
 }
        void TransparentStreamSetWriteTimeoutRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamSetWriteTimeoutRequestMessage request = (TransparentStreamSetWriteTimeoutRequestMessage)transparentStreamMessageBase;
            Exception exception = null;

            try {
                baseStream.WriteTimeout = request.WriteTimeout;
            } catch (Exception ex) {
                exception = ex;
            }
            objectBusSession.SendMessage(new TransparentStreamSetWriteTimeoutResponseMessage(streamID, request.ID, exception));
        }
        bool TransparentStreamCloseRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamCloseRequestMessage request = (TransparentStreamCloseRequestMessage)transparentStreamMessageBase;
            Exception exception = null;

            try {
                baseStream.Close();
            } catch (Exception ex) {
                exception = ex;
            }
            objectBusSession.SendMessage(new TransparentStreamCloseResponseMessage(streamID, request.ID, exception));
            return(exception == null);
        }
        void TransparentStreamGetPositionRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamGetPositionRequestMessage request = (TransparentStreamGetPositionRequestMessage)transparentStreamMessageBase;
            Exception exception = null;
            long      position  = -1;

            try {
                position = baseStream.Length;
            } catch (Exception ex) {
                exception = ex;
            }
            objectBusSession.SendMessage(new TransparentStreamGetPositionResponseMessage(streamID, request.ID, position, exception));
        }
        void TransparentStreamGetReadTimeoutRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamGetReadTimeoutRequestMessage request = (TransparentStreamGetReadTimeoutRequestMessage)transparentStreamMessageBase;
            Exception exception   = null;
            int       readTimeout = -1;

            try {
                readTimeout = baseStream.ReadTimeout;
            } catch (Exception ex) {
                exception = ex;
            }
            objectBusSession.SendMessage(new TransparentStreamGetReadTimeoutResponseMessage(streamID, request.ID, readTimeout, exception));
        }
        void TransparentStreamSeekRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamSeekRequestMessage request = (TransparentStreamSeekRequestMessage)transparentStreamMessageBase;
            Exception exception = null;
            long      seek      = -1;

            try {
                seek = baseStream.Seek(request.Offset, request.SeekOrigin);
            } catch (Exception ex) {
                exception = ex;
            }
            objectBusSession.SendMessage(new TransparentStreamSeekResponseMessage(streamID, request.ID, seek, exception));
        }
        void TransparentStreamCanWriteRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamCanWriteRequestMessage request = (TransparentStreamCanWriteRequestMessage)transparentStreamMessageBase;
            Exception exception = null;
            bool      canWrite  = false;

            try {
                canWrite = baseStream.CanWrite;
            } catch (Exception ex) {
                exception = ex;
            }
            objectBusSession.SendMessage(new TransparentStreamCanWriteResponseMessage(streamID, request.ID, canWrite, exception));
        }
        void TransparentStreamWriteRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
        {
            TransparentStreamWriteRequestMessage request = (TransparentStreamWriteRequestMessage)transparentStreamMessageBase;
            Exception exception = null;

            try {
                baseStream.BeginWrite(request.Buffer, 0, request.Buffer.Length, (ar) => {
                    try {
                        baseStream.EndWrite(ar);
                    } catch (Exception ex) {
                        objectBusSession.SendMessage(new TransparentStreamWriteResponseMessage(streamID, request.ID, ex));
                    }
                }, request.Buffer);
            } catch (Exception ex) {
                exception = ex;
                objectBusSession.SendMessage(new TransparentStreamWriteResponseMessage(streamID, request.ID, exception));
            }
        }
 public void EnqueueRequest(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     if (transparentStreamMessageBase == null)
     {
         throw new ArgumentNullException("transparentStreamMessageBase");
     }
     if (transparentStreamMessageBase is TransparentStreamCanReadRequestMessage)
     {
         TransparentStreamCanReadRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamCanSeekRequestMessage)
     {
         TransparentStreamCanSeekRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamCanTimeoutRequestMessage)
     {
         TransparentStreamCanTimeoutRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamCanWriteRequestMessage)
     {
         TransparentStreamCanWriteRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamCloseRequestMessage)
     {
         if (TransparentStreamCloseRequestMessageReceived(transparentStreamMessageBase))
         {
             agent.RemoveStreamServer(this);
         }
     }
     else if (transparentStreamMessageBase is TransparentStreamFlushRequestMessage)
     {
         TransparentStreamFlushRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamGetLengthRequestMessage)
     {
         TransparentStreamGetLengthRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamGetPositionRequestMessage)
     {
         TransparentStreamGetPositionRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamGetReadTimeoutRequestMessage)
     {
         TransparentStreamGetReadTimeoutRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamGetWriteTimeoutRequestMessage)
     {
         TransparentStreamGetWriteTimeoutRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamReadRequestMessage)
     {
         TransparentStreamReadRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamSeekRequestMessage)
     {
         TransparentStreamSeekRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamSetLengthRequestMessage)
     {
         TransparentStreamSetLengthRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamSetPositionRequestMessage)
     {
         TransparentStreamSetPositionRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamSetReadTimeoutRequestMessage)
     {
         TransparentStreamSetReadTimeoutRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamSetWriteTimeoutRequestMessage)
     {
         TransparentStreamSetWriteTimeoutRequestMessageReceived(transparentStreamMessageBase);
     }
     else if (transparentStreamMessageBase is TransparentStreamWriteRequestMessage)
     {
         TransparentStreamWriteRequestMessageReceived(transparentStreamMessageBase);
     }
 }
Example #11
0
 void TransparentStreamWriteRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamWriteRequestMessage request = (TransparentStreamWriteRequestMessage)transparentStreamMessageBase;
     Exception exception = null;
     try {
         baseStream.BeginWrite (request.Buffer, 0, request.Buffer.Length, (ar) => {
             try {
                 baseStream.EndWrite (ar);
             } catch (Exception ex) {
                 objectBusSession.SendMessage (new TransparentStreamWriteResponseMessage (streamID, request.ID, ex));
             }
         }, request.Buffer);
     } catch (Exception ex) {
         exception = ex;
         objectBusSession.SendMessage (new TransparentStreamWriteResponseMessage (streamID, request.ID, exception));
     }
 }
Example #12
0
		void TransparentStreamWriteResponseMessageReceived (TransparentStreamMessageBase transparentStreamMessageBase)
		{
			if (transparentStreamMessageBase == null)
				throw new ArgumentNullException ("transparentStreamMessageBase");
			if (transparentStreamMessageBase.StreamID != streamID)
				throw new Exception ("TransparentStreamMessageBase instance does not belong to this stream");
			if (!(transparentStreamMessageBase is TransparentStreamWriteResponseMessage)) {
				throw new ArgumentException ("transparentStreamMessageBase must be of type TransparentStreamWriteResponseMessage.");
			}
			TransparentStreamWriteResponseMessage response = (TransparentStreamWriteResponseMessage)transparentStreamMessageBase;
			TransparentStreamAsyncResult ar;
			pendingWriteRequests.TryRemove (response.RequestID, out ar);
			ar.Set (response);
		}
Example #13
0
		void TransparentStreamReadResponseMessageReceived (TransparentStreamMessageBase transparentStreamMessageBase)
		{
			if (transparentStreamMessageBase == null)
				throw new ArgumentNullException ("transparentStreamMessageBase");
			if (transparentStreamMessageBase.StreamID != streamID)
				throw new Exception ("TransparentStreamMessageBase instance does not belong to this stream");
			if (!(transparentStreamMessageBase is TransparentStreamReadResponseMessage)) {
				throw new ArgumentException ("transparentStreamMessageBase must be of type TransparentStreamReadResponseMessage.");
			}
			TransparentStreamReadResponseMessage response = (TransparentStreamReadResponseMessage)transparentStreamMessageBase;
			Tuple <TransparentStreamAsyncResult, byte[], int, int> tuple;
			pendingReadRequests.TryGetValue (response.RequestID, out tuple);
			tuple.Item1.Set (response);
		}
Example #14
0
 bool TransparentStreamCloseRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamCloseRequestMessage request = (TransparentStreamCloseRequestMessage)transparentStreamMessageBase;
     Exception exception = null;
     try {
         baseStream.Close ();
     } catch (Exception ex) {
         exception = ex;
     }
     objectBusSession.SendMessage (new TransparentStreamCloseResponseMessage (streamID, request.ID, exception));
     return (exception == null);
 }
Example #15
0
 void TransparentStreamCanWriteRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamCanWriteRequestMessage request = (TransparentStreamCanWriteRequestMessage)transparentStreamMessageBase;
     Exception exception = null;
     bool canWrite = false;
     try {
         canWrite = baseStream.CanWrite;
     } catch (Exception ex) {
         exception = ex;
     }
     objectBusSession.SendMessage (new TransparentStreamCanWriteResponseMessage (streamID, request.ID, canWrite, exception));
 }
Example #16
0
 void TransparentStreamGetReadTimeoutRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamGetReadTimeoutRequestMessage request = (TransparentStreamGetReadTimeoutRequestMessage)transparentStreamMessageBase;
     Exception exception = null;
     int readTimeout = -1;
     try {
         readTimeout = baseStream.ReadTimeout;
     } catch (Exception ex) {
         exception = ex;
     }
     objectBusSession.SendMessage (new TransparentStreamGetReadTimeoutResponseMessage (streamID, request.ID, readTimeout, exception));
 }
Example #17
0
 void TransparentStreamGetPositionRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamGetPositionRequestMessage request = (TransparentStreamGetPositionRequestMessage)transparentStreamMessageBase;
     Exception exception = null;
     long position = -1;
     try {
         position = baseStream.Length;
     } catch (Exception ex) {
         exception = ex;
     }
     objectBusSession.SendMessage (new TransparentStreamGetPositionResponseMessage (streamID, request.ID, position, exception));
 }
Example #18
0
 void TransparentStreamReadRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamReadRequestMessage request = (TransparentStreamReadRequestMessage)transparentStreamMessageBase;
     byte[] buffer = new byte[request.Count];
     try {
         baseStream.BeginRead (buffer, 0, request.Count, (ar) => {
             try {
                 int bytesRead = baseStream.EndRead (ar);
                 if (bytesRead != ((byte[])ar.AsyncState).Length) {
                     byte[] newBuffer = new byte[bytesRead];
                     System.Buffer.BlockCopy ((byte[])ar.AsyncState, 0, newBuffer, 0, bytesRead);
                     objectBusSession.SendMessage (new TransparentStreamReadResponseMessage (streamID, request.ID, newBuffer, null));
                 } else {
                     objectBusSession.SendMessage (new TransparentStreamReadResponseMessage (streamID, request.ID, (byte[])ar.AsyncState, null));
                 }
             } catch (Exception ex) {
                 objectBusSession.SendMessage (new TransparentStreamReadResponseMessage (streamID, request.ID, (byte[])ar.AsyncState, ex));
             }
         }, buffer);
     } catch (Exception ex) {
         objectBusSession.SendMessage (new TransparentStreamReadResponseMessage (streamID, request.ID, null, ex));
     }
 }
Example #19
0
 public void EnqueueRequest(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     if (transparentStreamMessageBase == null)
         throw new ArgumentNullException ("transparentStreamMessageBase");
     if (transparentStreamMessageBase is TransparentStreamCanReadRequestMessage) {
         TransparentStreamCanReadRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamCanSeekRequestMessage) {
         TransparentStreamCanSeekRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamCanTimeoutRequestMessage) {
         TransparentStreamCanTimeoutRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamCanWriteRequestMessage) {
         TransparentStreamCanWriteRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamCloseRequestMessage) {
         if (TransparentStreamCloseRequestMessageReceived (transparentStreamMessageBase))
             agent.RemoveStreamServer (this);
     } else if (transparentStreamMessageBase is TransparentStreamFlushRequestMessage) {
         TransparentStreamFlushRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamGetLengthRequestMessage) {
         TransparentStreamGetLengthRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamGetPositionRequestMessage) {
         TransparentStreamGetPositionRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamGetReadTimeoutRequestMessage) {
         TransparentStreamGetReadTimeoutRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamGetWriteTimeoutRequestMessage) {
         TransparentStreamGetWriteTimeoutRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamReadRequestMessage) {
         TransparentStreamReadRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamSeekRequestMessage) {
         TransparentStreamSeekRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamSetLengthRequestMessage) {
         TransparentStreamSetLengthRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamSetPositionRequestMessage) {
         TransparentStreamSetPositionRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamSetReadTimeoutRequestMessage) {
         TransparentStreamSetReadTimeoutRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamSetWriteTimeoutRequestMessage) {
         TransparentStreamSetWriteTimeoutRequestMessageReceived (transparentStreamMessageBase);
     } else if (transparentStreamMessageBase is TransparentStreamWriteRequestMessage) {
         TransparentStreamWriteRequestMessageReceived (transparentStreamMessageBase);
     }
 }
Example #20
0
		internal void ResponseReceived (TransparentStreamMessageBase transparentStreamMessageBase)
		{
			if (transparentStreamMessageBase is TransparentStreamCanReadResponseMessage) {
				TransparentStreamCanReadResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamCanSeekResponseMessage) {
				TransparentStreamCanSeekResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamCanTimeoutResponseMessage) {
				TransparentStreamCanTimeoutResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamCanWriteResponseMessage) {
				TransparentStreamCanWriteResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamCloseResponseMessage) {
				TransparentStreamCloseResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamFlushResponseMessage) {
				TransparentStreamFlushResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamGetLengthResponseMessage) {
				TransparentStreamGetLengthResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamGetPositionResponseMessage) {
				TransparentStreamGetPositionResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamGetReadTimeoutResponseMessage) {
				TransparentStreamGetReadTimeoutResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamGetWriteTimeoutResponseMessage) {
				TransparentStreamGetWriteTimeoutResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamReadResponseMessage) {
				TransparentStreamReadResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamSeekResponseMessage) {
				TransparentStreamSeekResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamSetLengthResponseMessage) {
				TransparentStreamSetLengthResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamSetPositionResponseMessage) {
				TransparentStreamSetPositionResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamSetReadTimeoutResponseMessage) {
				TransparentStreamSetReadTimeoutResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamSetWriteTimeoutResponseMessage) {
				TransparentStreamSetWriteTimeoutResponseMessageReceived (transparentStreamMessageBase);
			} else if (transparentStreamMessageBase is TransparentStreamWriteResponseMessage) {
				TransparentStreamWriteResponseMessageReceived (transparentStreamMessageBase);
			}
		}
Example #21
0
 void TransparentStreamSetWriteTimeoutRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamSetWriteTimeoutRequestMessage request = (TransparentStreamSetWriteTimeoutRequestMessage)transparentStreamMessageBase;
     Exception exception = null;
     try {
         baseStream.WriteTimeout = request.WriteTimeout;
     } catch (Exception ex) {
         exception = ex;
     }
     objectBusSession.SendMessage (new TransparentStreamSetWriteTimeoutResponseMessage (streamID, request.ID, exception));
 }
Example #22
0
 void TransparentStreamSeekRequestMessageReceived(TransparentStreamMessageBase transparentStreamMessageBase)
 {
     TransparentStreamSeekRequestMessage request = (TransparentStreamSeekRequestMessage)transparentStreamMessageBase;
     Exception exception = null;
     long seek = -1;
     try {
         seek = baseStream.Seek (request.Offset, request.SeekOrigin);
     } catch (Exception ex) {
         exception = ex;
     }
     objectBusSession.SendMessage (new TransparentStreamSeekResponseMessage (streamID, request.ID, seek, exception));
 }