InternalPipeStream.st
author Claus Gittinger <cg@exept.de>
Thu, 30 Jun 2016 18:18:01 +0200
changeset 3978 e4c47408edb2
parent 3291 facd0cfd0781
child 4326 5aca213f1a71
permissions -rw-r--r--
#FEATURE by cg class: InternalPipeStream class definition added: #contentsSpecies #contentsSpecies: #isOpen #writeWaitWithTimeoutMs: comment/format in: #documentation #examples changed:6 methods
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic2' }"
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
     3
"{ NameSpace: Smalltalk }"
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
     4
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
Stream subclass:#InternalPipeStream
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
     6
	instanceVariableNames:'queue closed contentsSpecies'
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'Streams'
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
1016
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    12
!InternalPipeStream class methodsFor:'documentation'!
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    13
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    14
documentation
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    15
"
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    16
    not useful on its own, but can be used to talk to a vt100
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    17
    terminal view ...
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    18
    
1016
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    19
    See example.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    20
"
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    21
!
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    22
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    23
examples
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    24
"
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    25
                                                                [exBegin]
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    26
    |p|
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    27
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    28
    p := InternalPipeStream new.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    29
    [
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    30
        10 timesRepeat:[
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    31
            p nextPutLine:'hello'
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    32
        ].
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    33
    ] fork.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    34
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    35
    [
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    36
        10 timesRepeat:[
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    37
            Transcript showCR:p nextLine
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    38
        ].
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    39
    ] fork.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    40
                                                                [exEnd]
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    41
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    42
                                                                [exBegin]
3291
facd0cfd0781 Fixed examples (added missing vars, dot at the end of statement)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128
diff changeset
    43
    |userInput elizasOutput top terminal|
1016
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    44
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    45
    userInput    := InternalPipeStream new.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    46
    elizasOutput := InternalPipeStream new.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    47
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    48
    top := StandardSystemView new.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    49
    terminal := VT100TerminalView openOnInput: userInput output:elizasOutput in:top.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    50
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    51
    top extent:(terminal preferredExtent).
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    52
    top label:'The doctor is in'.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    53
    top iconLabel:'doctor'.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    54
    top open.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    55
    top waitUntilVisible.
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    56
    top onChangeEvaluate:[:what :aParameter :changedObject | what == #destroyed ifTrue:[userInput close]].
1016
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    57
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    58
    terminal translateNLToCRNL:true.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    59
    terminal inputTranslateCRToNL:true.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    60
    terminal localEcho:true.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    61
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    62
    elizasOutput nextPutLine:'Hi, I am Eliza'.
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    63
    elizasOutput nextPutLine:'What is your problem (type end to finish conversation) ?'.
1016
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    64
    elizasOutput nextPutLine:''.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    65
    elizasOutput nextPutAll:'>'.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    66
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    67
    [top realized] whileTrue:[
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    68
        |line answer matchingRule|
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    69
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    70
        line := userInput nextLine.
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    71
        ((line isEmptyOrNil and:[userInput atEnd]) or:[ #('quit' 'exit' 'end' 'bye') includes:line ]) ifTrue:[
1016
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    72
            top destroy.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    73
            ^ self
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    74
        ].
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    75
3291
facd0cfd0781 Fixed examples (added missing vars, dot at the end of statement)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128
diff changeset
    76
        answer := 'Tell me more.'.
1016
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    77
        elizasOutput nextPutLine:answer.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    78
        elizasOutput nextPutAll:'>'.
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    79
    ].
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    80
                                                                [exEnd]
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    81
"
47e190c35919 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1015
diff changeset
    82
! !
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!InternalPipeStream class methodsFor:'instance creation'!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
new
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    ^ self basicNew initialize
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
! !
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!InternalPipeStream methodsFor:'accessing'!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
atEnd
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    93
    ^ closed and:[queue isEmpty]
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
close
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    97
    "if there is any partner waiting at either side of the queue,
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    98
     tell it that the pipe is no longer active.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
    99
     (readers will read an EOF condition, writers will get a write error).
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   100
     Either side may close the internal pipe."
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   101
     
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   102
    closed := true.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   103
    queue readSemaphore signalForAll
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   104
!
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   105
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   106
isOpen
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   107
    ^ closed not
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
next
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    "return the next element from the stream (might block until something is written)"
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   113
    (closed and:[queue isEmpty]) ifTrue:[^ self pastEndRead].
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    ^ queue next
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
nextAvailableBytes:nMax into:aBuffer startingAt:startIndex
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    |n idx ch|
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   120
    (closed and:[queue isEmpty and:[self pastEndRead isNil]]) ifTrue:[^ 0].
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   121
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    n := 0.
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    idx := startIndex.
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    [n <= nMax] whileTrue:[
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
        ch := queue nextIfEmpty:[^ n ].
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
        aBuffer at:idx put:ch.
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
        idx := idx + 1.
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
        n := n + 1
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    ].
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    ^ n
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   133
nextPut:anObject
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    "write an element (might wakeup readers)"
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   136
    closed ifTrue:[ self errorNotOpen].
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   137
    queue nextPut:anObject
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   138
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   139
    "
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   140
     |s|
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   141
     s := InternalPipeStream new.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   142
     s nextPut:$a.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   143
     s nextPut:$b.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   144
     s nextPut:$c.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   145
    "
3128
b4d3fba8e356 class: InternalPipeStream
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   146
!
b4d3fba8e356 class: InternalPipeStream
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   147
b4d3fba8e356 class: InternalPipeStream
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   148
size
b4d3fba8e356 class: InternalPipeStream
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   149
    ^ queue size
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
! !
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
!InternalPipeStream methodsFor:'initialization'!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   154
contentsSpecies:aClass
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   155
    "by default, I will return a String of elements, if reading multiple elements.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   156
     However, you may change this to eg. an array, if desired"
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   157
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   158
    contentsSpecies := aClass.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   159
!
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   160
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
initialize
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    queue := SharedQueue new.
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   163
    closed := false.
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   164
! !
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   165
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   166
!InternalPipeStream methodsFor:'queries'!
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   167
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   168
contentsSpecies
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   169
    ^ contentsSpecies ? String
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
! !
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
!InternalPipeStream methodsFor:'synchronization'!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
readWait
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    queue readSemaphore wait
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   176
!
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   177
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   178
writeWaitWithTimeoutMs:timeout
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   179
    queue writeSemaphore waitWithTimeoutMs:timeout
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
! !
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
!InternalPipeStream class methodsFor:'documentation'!
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
version
3978
e4c47408edb2 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3291
diff changeset
   185
    ^ '$Header$'
1015
b03679cb8a3f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
! !
3128
b4d3fba8e356 class: InternalPipeStream
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   187