org.apache.daffodil.processors.unparsers
RegionSplitUnparser
Companion object RegionSplitUnparser
class RegionSplitUnparser extends PrimUnparser with SuspendableUnparser
We need to isolate the regions that we have to test for ZL/notZL for separator suppression. So we want these regions to not share data output streams with anything outside them.
To achieve that we split the data output stream using its buffering capabilities. Some of the splits are natural. They are one side of the (potentially suppressed) separator itself. So creating that suspendable unparser for the separator gives us a split.
The other side of these regions is however, an artificial split.
To avoid duplication of complex code paths, we create this suspendable unparser that exists purely to split the underlying DOS but maintain all the invariants of the underlying DOS code, i.e., the streams still get finalized (and therefore collapsed) the regular way.
We are counting on the fact that these objects live on the garbage collected heap, so have unbounded lifetimes, i.e., they aren't recycled in a pool or anything.
Performance Note: These do not need to capture state like a normal suspension does (e.g., for dfdl:outputValueCalc), as they're not actually suspending any actual unparsing behavior. Just forcing a boundary in the data output streams so that we can use the data output streams to measure the length (zero/non-zero) of unparsed data.
- Alphabetic
- By Inheritance
- RegionSplitUnparser
- SuspendableUnparser
- PrimUnparser
- PrimProcessor
- Unparser
- Processor
- Serializable
- Serializable
- Logging
- Identity
- ToBriefXMLImpl
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new RegionSplitUnparser(context: TermRuntimeData)
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
UE(ustate: UState, s: String, args: Any*): Nothing
- Definition Classes
- Unparser
-
final
def
areLogging(lvl: Type): Boolean
- Definition Classes
- Logging
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
briefXMLAttributes: String
- Attributes
- protected
- Definition Classes
- ToBriefXMLImpl
-
val
childProcessors: Vector[Processor]
- Definition Classes
- RegionSplitUnparser → PrimProcessor → Processor → ToBriefXMLImpl
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
val
context: TermRuntimeData
- Definition Classes
- RegionSplitUnparser → Unparser → Processor
- lazy val dataOutputStream: DirectOrBufferedDataOutputStream
-
def
doLogging(lvl: Type, msg: String, args: Seq[Any]): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
getLogWriter(): LogWriter
- Definition Classes
- Logging
-
final
def
getLoggingLevel(): Type
- Definition Classes
- Logging
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
isEmpty: Boolean
- Definition Classes
- Unparser → Processor
-
val
isInitialized: Boolean
- Definition Classes
- Processor
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isPrimitive: Boolean
- Definition Classes
- PrimProcessor → Processor
-
final macro
def
log(lvl: Type, msg: String, args: Any*): Unit
- Definition Classes
- Logging
-
lazy val
logID: String
- Definition Classes
- Logging → Identity
-
val
logLevel: Maybe[Type]
- Definition Classes
- Logging
-
val
logWriter: Maybe[LogWriter]
- Definition Classes
- Logging
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
nom: String
- Definition Classes
- ToBriefXMLImpl
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
runtimeDependencies: Vector[Nothing]
- Definition Classes
- RegionSplitUnparser → Processor
-
def
setLogWriter(lw: LogWriter): Unit
- Definition Classes
- Logging
-
def
setLoggingLevel(level: Type): Unit
- Definition Classes
- Logging
-
lazy val
suspendableOperation: RegionSplitSuspendableOperation
- Definition Classes
- RegionSplitUnparser → SuspendableUnparser
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toBriefXML(depthLimit: Int): String
- Definition Classes
- ToBriefXMLImpl
-
def
toString(): String
- Definition Classes
- ToBriefXMLImpl → AnyRef → Any
-
final
def
unparse(state: UState): Unit
- Definition Classes
- SuspendableUnparser → Unparser
-
final
def
unparse1(ustate: UState, ignore: AnyRef): Unit
- Definition Classes
- Unparser
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
macro
def
withLoggingLevel[S](newLevel: Type)(body: ⇒ S): Unit
- Definition Classes
- Logging