private void ParseResponse(byte[] responseBytes, out Basics.DSS.IDSS reservationObject) { reservationObject = null; if (responseBytes == null) { return; } Stream contentStream = null; BinaryReader binaryReader = null; contentStream = new MemoryStream(responseBytes, 0, responseBytes.Length, false); binaryReader = new BinaryReader(contentStream); /* * <- \BYTE\BYTE\CHARS{BYTEVALUELENGTH}\LONG * <- \BYTE */ if (binaryReader.ReadByte() == 2) { throw new ReservationCreationException(); } byte reservationIDLength = binaryReader.ReadByte(); string reservationID = new string(binaryReader.ReadChars(reservationIDLength)); DateTime expireDate = new DateTime(binaryReader.ReadInt64()); reservationObject = new ExternalDSS(ref this._RequestHandler, ref this._ResponseHandler, reservationID, expireDate); }
public VariablePool(string sessionID, string keyID, ref Basics.DSS.IDSS reservation) { this.SessionID = sessionID; this.KeyID = keyID; this._Reservation = reservation; }
private bool Get(string uniqueID, out Basics.DSS.IDSS reservationObject) { reservationObject = null; if (string.IsNullOrEmpty(uniqueID)) { return(false); } if (!this._ReservationTable.TryGetValue(uniqueID, out reservationObject)) { return(false); } if (((IDSSService)reservationObject).IsExpired) { reservationObject = null; return(false); } ((IDSSService)reservationObject).Extend(); return(true); }
public void Reserve(string uniqueID, int reservationTimeout, out Basics.DSS.IDSS reservationObject) { if (this.Get(uniqueID, out reservationObject)) { return; } this.Create(uniqueID, reservationTimeout, out reservationObject); }
private void Create(string uniqueID, int reservationTimeout, out Basics.DSS.IDSS reservationObject) { if (string.IsNullOrEmpty(uniqueID)) { throw new ReservationCreationException(); } reservationObject = new MemoryDSS(uniqueID, reservationTimeout); if (!this._ReservationTable.TryAdd(uniqueID, reservationObject)) { throw new ReservationCreationException(); } }
public void Reserve(string uniqueID, int reservationTimeout, out Basics.DSS.IDSS reservationObject) { this.MakeConnection(); BinaryWriter binaryWriter = null; Stream requestStream = null; try { requestStream = new MemoryStream(); binaryWriter = new BinaryWriter(requestStream); /* * -> \LONG\ACQ\SHORT * -> \LONG\ACQ\SHORT\BYTE\CHARS{BYTEVALUELENGTH} */ binaryWriter.Write("ACQ".ToCharArray()); binaryWriter.Write(reservationTimeout); binaryWriter.Write((byte)uniqueID.Length); binaryWriter.Write(uniqueID.ToCharArray()); binaryWriter.Flush(); long requestID = this._RequestHandler.MakeRequest(((MemoryStream)requestStream).ToArray()); byte[] responseBytes = this._ResponseHandler.WaitForMessage(requestID); this.ParseResponse(responseBytes, out reservationObject); } finally { if (binaryWriter != null) { binaryWriter.Close(); } if (requestStream != null) { requestStream.Close(); GC.SuppressFinalize(requestStream); } } }
public ReservationEnclosure(string sessionID, ref Basics.DSS.IDSS reservation) { this.SessionID = sessionID; this._Reservation = reservation; }