// // Write a object instance to data output stream // public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { DataArrayResponse info = (DataArrayResponse)o; base.LooseMarshal(wireFormat, o, dataOut); LooseMarshalObjectArray(wireFormat, info.Data, dataOut); }
private async Task <XATransactionId[]> TryRecoverBrokerTXIdsAsync() { Tracer.Debug("Checking for Recoverable Transactions on Broker."); TransactionInfo info = new TransactionInfo(); info.ConnectionId = this.session.Connection.ConnectionId; info.Type = (int)TransactionType.Recover; await this.connection.CheckConnectedAsync().Await(); DataArrayResponse response = await this.connection.SyncRequestAsync(info).Await() as DataArrayResponse; if (response != null && response.Data.Length > 0) { Tracer.DebugFormat("Broker reports there are {0} recoverable XA Transactions", response.Data.Length); List <XATransactionId> recovered = new List <XATransactionId>(); foreach (DataStructure ds in response.Data) { XATransactionId xid = ds as XATransactionId; if (xid != null) { recovered.Add(xid); } } return(recovered.ToArray()); } return(new XATransactionId[0]); }
// // Write a object instance to data output stream // public override void TightMarshal2(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut, BooleanStream bs) { base.TightMarshal2(wireFormat, o, dataOut, bs); DataArrayResponse info = (DataArrayResponse)o; TightMarshalObjectArray2(wireFormat, info.Data, dataOut, bs); }
// // Write the booleans that this object uses to a BooleanStream // public override int TightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) { DataArrayResponse info = (DataArrayResponse)o; int rc = base.TightMarshal1(wireFormat, o, bs); rc += TightMarshalObjectArray1(wireFormat, info.Data, bs); return(rc + 0); }
// // Un-marshal an object instance from the data input stream // public override void TightUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn, BooleanStream bs) { base.TightUnmarshal(wireFormat, o, dataIn, bs); DataArrayResponse info = (DataArrayResponse)o; if (bs.ReadBoolean()) { short size = dataIn.ReadInt16(); DataStructure[] value = new DataStructure[size]; for (int i = 0; i < size; i++) { value[i] = (DataStructure)TightUnmarshalNestedObject(wireFormat, dataIn, bs); } info.Data = value; } else { info.Data = null; } }