GDBInternalPipeStream.st
author Jan Vrany <jan.vrany@labware.com>
Mon, 04 Sep 2023 14:00:57 +0100
changeset 314 4a2ef5a087f0
parent 302 fdfe1a981363
permissions -rw-r--r--
Add MI parser test This commit add test to parse real-world frament which failed to Pharo properly at some point. It is encoded here as bytearray to make sure all the characters are preserved exactly as they were.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
     4
Copyright (C) 2022-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     5
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     6
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     7
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     8
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     9
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    10
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    11
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    12
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    13
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    14
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    15
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    16
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    17
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    18
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    19
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    20
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    21
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    22
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    23
"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"{ Package: 'jv:libgdbs' }"
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
62
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    26
"{ NameSpace: Smalltalk }"
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    27
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
Stream subclass:#GDBInternalPipeStream
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    29
	instanceVariableNames:'buffer first last accessLock dataAvailable spaceAvailable closed'
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    30
	classVariableNames:'DefaultBufferSize'
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	poolDictionaries:''
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    32
	category:'GDB-Internal-Support'
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    33
!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    34
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    35
!GDBInternalPipeStream class methodsFor:'documentation'!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    36
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    37
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    38
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    39
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    40
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    41
Copyright (C) 2022-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    42
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    43
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    44
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    45
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    46
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    47
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    48
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    49
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    50
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    51
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    52
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    53
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    54
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    55
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    56
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    57
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    58
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    59
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    60
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    61
!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    62
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    63
documentation
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    64
"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    65
    not useful on its own, but can be used to talk to a vt100
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    66
    terminal view ...
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    67
    See example.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    68
"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    71
examples
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    72
"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    73
                                                                [exBegin]
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    74
    |p|
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    75
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    76
    p := InternalPipeStream new.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    77
    [
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    78
        10 timesRepeat:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    79
            p nextPutLine:'hello'
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    80
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    81
    ] fork.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    82
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    83
    [
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    84
        10 timesRepeat:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    85
            Transcript showCR:p nextLine
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    86
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    87
    ] fork.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    88
                                                                [exEnd]
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    89
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    90
                                                                [exBegin]
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    91
    |userInput elizasOutput top terminal|
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    92
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    93
    userInput    := InternalPipeStream new.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    94
    elizasOutput := InternalPipeStream new.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    95
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    96
    top := StandardSystemView new.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    97
    terminal := VT100TerminalView openOnInput: userInput output:elizasOutput in:top.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    98
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    99
    top extent:(terminal preferredExtent).
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   100
    top label:'The doctor is in'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   101
    top iconLabel:'doctor'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   102
    top open.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   103
    top waitUntilVisible.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   104
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   105
    terminal translateNLToCRNL:true.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   106
    terminal inputTranslateCRToNL:true.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   107
    terminal localEcho:true.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   108
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   109
    elizasOutput nextPutLine:'Hi, I am Eliza'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   110
    elizasOutput nextPutLine:'What is your problem ?'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   111
    elizasOutput nextPutLine:''.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   112
    elizasOutput nextPutAll:'>'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   113
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   114
    [top realized] whileTrue:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   115
        |line answer matchingRule|
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   116
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   117
        line := userInput nextLine.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   118
        (#('quit' 'exit' 'end' 'bye') includes:line) ifTrue:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   119
            top destroy.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   120
            ^ self
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   121
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   122
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   123
        answer := 'Tell me more.'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   124
        elizasOutput nextPutLine:answer.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   125
        elizasOutput nextPutAll:'>'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   126
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   127
                                                                [exEnd]
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   128
"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   129
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   130
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   131
!GDBInternalPipeStream class methodsFor:'initialization'!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   132
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   133
initialize
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   134
    "Invoked at system start or when the class is dynamically loaded."
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   135
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   136
    "/ please change as required (and remove this comment)
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   137
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   138
    DefaultBufferSize := 1024.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   139
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   140
    "Modified: / 07-06-2014 / 00:49:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   141
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   142
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
!GDBInternalPipeStream class methodsFor:'instance creation'!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
new
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   146
    ^ self newWithBufferSize: DefaultBufferSize
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   147
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   148
    "Modified: / 10-06-2014 / 00:26:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   149
!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   150
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   151
newWithBufferSize: bufferSize
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   152
    ^ self basicNew initializeWithBufferSize: bufferSize
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   153
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   154
    "Created: / 07-06-2014 / 00:48:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
!GDBInternalPipeStream methodsFor:'accessing'!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
atEnd
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   160
    ^ closed and:[ last == 0 ]
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   161
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   162
    "Modified: / 07-06-2014 / 01:06:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
close
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   166
    closed := true.
32
d9c96b33afd6 Temporary commit: more work on simulator...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   167
    dataAvailable signalForAll.
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
32
d9c96b33afd6 Temporary commit: more work on simulator...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   169
    "Modified: / 26-08-2014 / 09:47:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
28
28f11426c435 Added GDBInternalPipeStream>>readStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   172
readStream
28f11426c435 Added GDBInternalPipeStream>>readStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   173
    ^ self
28f11426c435 Added GDBInternalPipeStream>>readStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   174
28f11426c435 Added GDBInternalPipeStream>>readStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   175
    "Created: / 03-07-2014 / 20:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28f11426c435 Added GDBInternalPipeStream>>readStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   176
!
28f11426c435 Added GDBInternalPipeStream>>readStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   177
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
size
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   179
    last == 0 ifTrue:[ ^ 0 ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   180
    last >= first ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   181
        ^ last - first + 1 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   182
    ] ifFalse:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   183
        ^ buffer size - first + 1 + last
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   184
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   185
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   186
    "Modified: / 07-06-2014 / 01:08:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
!GDBInternalPipeStream methodsFor:'initialization'!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   191
initializeWithBufferSize: bufferSize
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   192
    buffer := String new: bufferSize.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   193
    first := 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   194
    last := 0.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   195
302
fdfe1a981363 Compatibility: allow ports to customize semaphore / mutex creation
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   196
    accessLock := GDBPortlib current newMutex." Plug new respondTo: #critical: with: [ :block | block value ]; yourself."
fdfe1a981363 Compatibility: allow ports to customize semaphore / mutex creation
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   197
    dataAvailable := GDBPortlib current newSemaphore.
fdfe1a981363 Compatibility: allow ports to customize semaphore / mutex creation
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   198
    spaceAvailable := GDBPortlib current newSemaphore.
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   199
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   200
    closed := false
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   201
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   202
    "Created: / 07-06-2014 / 00:49:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   203
    "Modified: / 11-06-2014 / 23:12:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
302
fdfe1a981363 Compatibility: allow ports to customize semaphore / mutex creation
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   204
    "Modified: / 18-08-2023 / 14:18:17 / Jan Vrany <jan.vrany@labware.com>"
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   205
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   206
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   207
!GDBInternalPipeStream methodsFor:'non homogenous reading'!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   208
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   209
nextAvailableBytes:max into:out startingAt:offset
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   210
    | count |
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   211
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   212
    accessLock critical:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   213
        last == 0 ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   214
            count := 0
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   215
        ] ifFalse:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   216
            last >= first ifTrue:[         
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   217
                count := max min: (last - first + 1).    
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   218
                out replaceFrom:offset to: offset + count - 1 with: buffer startingAt: first.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   219
                first := first + count.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   220
                first > last ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   221
                    first := 1. 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   222
                    last := 0.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   223
                ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   224
                spaceAvailable signalForAll.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   225
            ] ifFalse:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   226
                "/ Wrap around
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   227
                count := max.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   228
                first + count <= buffer size ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   229
                    out replaceFrom:offset to: offset + count - 1 with: buffer startingAt: first.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   230
                    first := (first + count) \\ buffer size.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   231
                    spaceAvailable signalForAll.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   232
                ] ifFalse:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   233
                    | rem |
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   234
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   235
                    count := max min: (buffer size - first) + last.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   236
                    rem := buffer size - first.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   237
                    out replaceFrom: offset to: offset + (buffer size - first) with: buffer startingAt: first.
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   239
                    out replaceFrom: offset + (buffer size - first + 1) to:  offset + count with: buffer startingAt: 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   240
                    rem == last ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   241
                        first := 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   242
                        last := 0.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   243
                    ] ifFalse:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   244
                        first := rem + 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   245
                    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   246
                ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   247
            ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   248
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   249
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   250
    ^ count
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   251
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   252
    "Modified: / 11-06-2014 / 21:40:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   253
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   254
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   255
!GDBInternalPipeStream methodsFor:'non homogenous writing'!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   256
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   257
nextPutBytes:count from:bytes startingAt:start
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   258
    "Write count bytes from an object starting at index start.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   259
     Return the number of bytes written.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   260
     The object must have non-pointer indexed instvars 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   261
     (i.e. be a ByteArray, String, Float- or DoubleArray).     
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   262
     Use with care - non object oriented i/o.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   263
     This is provided for compatibility with externalStream;
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   264
     to support binary storage"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   265
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   266
    | written write remaining offset space |
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   267
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   268
    closed ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   269
        self class writeErrorSignal signal:'Pipe stream closed'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   270
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   271
    written := 0.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   272
    remaining := count.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   273
    offset := start.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   274
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   275
    space := true.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   276
    [ space and:[remaining > 0] ] whileTrue:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   277
        accessLock critical:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   278
            space := ("self hasSpace"last == 0 or:[ ( (last \\ buffer size) + 1) ~~ first]).
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   279
            space ifTrue:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   280
                last == 0 ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   281
                    "/ Special case - empty buffer
34
4662b462b28e Fixes for GDBInternalPipeStream w.r.t multiple threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   282
                    write := remaining min: buffer size.
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   283
                    buffer replaceFrom:1 to: write with: bytes startingAt: offset.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   284
                    last := write.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   285
                ] ifFalse:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   286
                    | lastPlusOne |
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   287
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   288
                    lastPlusOne := (last \\ buffer size) + 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   289
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   290
                    first < lastPlusOne ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   291
                        write := remaining min: (buffer size - last).
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   292
                    ] ifFalse:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   293
                        write := (first - lastPlusOne + 1) min: remaining.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   294
                    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   295
                    buffer replaceFrom: lastPlusOne to: lastPlusOne + write - 1 with: bytes startingAt: offset.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   296
                    last := (last \\ buffer size) + write.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   297
                ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   298
                remaining := remaining - write.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   299
                written := written + write.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   300
                offset := offset + write.  
34
4662b462b28e Fixes for GDBInternalPipeStream w.r.t multiple threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   301
                dataAvailable signalForAll.    
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   302
            ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   303
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   304
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   305
    ^ written.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   306
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   307
    "Created: / 09-06-2014 / 22:04:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
34
4662b462b28e Fixes for GDBInternalPipeStream w.r.t multiple threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   308
    "Modified: / 07-09-2014 / 08:15:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
!GDBInternalPipeStream methodsFor:'private'!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
contentsSpecies
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   314
    ^ buffer class
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   315
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   316
    "Created: / 09-06-2014 / 21:50:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   317
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   318
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   319
!GDBInternalPipeStream methodsFor:'private-queries'!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   320
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   321
hasData
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   322
    ^ last ~~ 0
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   323
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   324
    "Created: / 11-06-2014 / 21:19:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   325
!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   326
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   327
hasSpace
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   328
    ^ last == 0 or:[ ( (last \\ buffer size) + 1) ~~ first]
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   329
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   330
    "Created: / 11-06-2014 / 21:18:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   331
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   332
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   333
!GDBInternalPipeStream methodsFor:'reading'!
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   335
next
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   336
    "return the next element from the stream (might block until something is written)"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   337
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   338
    | c |
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   340
    [
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   341
        accessLock critical:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   342
            ("self hasData"last ~~ 0) ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   343
                c := buffer at: first.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   344
                first == last ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   345
                    first := 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   346
                    last := 0.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   347
                ] ifFalse:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   348
                   first := (first \\ buffer size) + 1
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   349
                ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   350
                spaceAvailable signalForAll.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   351
                ^ c
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   352
            ] ifFalse:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   353
                closed ifTrue:[ ^ nil ]
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   354
            ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   355
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   356
        dataAvailable wait.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   357
    ] loop.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   358
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   359
    "Modified: / 11-06-2014 / 21:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
62
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   360
!
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   361
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   362
peek
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   363
    "return the next element from the stream but do not advance position (might block until something is written)"
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   364
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   365
    | c |
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   366
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   367
    [
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   368
        accessLock critical:[
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   369
            ("self hasData"last ~~ 0) ifTrue:[ 
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   370
                c := buffer at: first.
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   371
                ^ c
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   372
            ] ifFalse:[ 
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   373
                closed ifTrue:[ ^ nil ]
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   374
            ].
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   375
        ].
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   376
        dataAvailable wait.
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   377
    ] loop.
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   378
e1e763c6ac19 Added GDBInternalPipeStream>>peek:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   379
    "Created: / 08-03-2015 / 05:54:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
!GDBInternalPipeStream methodsFor:'synchronization'!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
readWait
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   385
    last == 0 ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   386
        dataAvailable wait.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   387
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   388
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   389
    "Modified: / 07-06-2014 / 01:09:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   390
!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   391
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   392
writeWait    
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   393
    | hasSpace |
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   394
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   395
    accessLock critical:[ hasSpace := self hasSpace ].
34
4662b462b28e Fixes for GDBInternalPipeStream w.r.t multiple threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   396
    hasSpace ifFalse:[ 
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   397
        spaceAvailable wait.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   398
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   399
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   400
    "Created: / 11-06-2014 / 22:04:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
34
4662b462b28e Fixes for GDBInternalPipeStream w.r.t multiple threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   401
    "Modified: / 07-09-2014 / 08:17:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   404
!GDBInternalPipeStream methodsFor:'writing'!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   405
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   406
nextPut:aCharacter
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   407
    | done |
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   408
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   409
    closed ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   410
        self class writeErrorSignal signal:'Pipe stream closed'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   411
        ^ self.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   412
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   413
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   414
    done := false.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   415
    [ done ] whileFalse:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   416
        accessLock critical:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   417
            ("self hasSpace"last == 0 or:[ ( (last \\ buffer size) + 1) ~~ first]) ifTrue:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   418
                last := (last \\ buffer size) + 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   419
                buffer at: last put: aCharacter.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   420
                done := true.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   421
            ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   422
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   423
        done ifFalse:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   424
            spaceAvailable wait.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   425
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   426
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   427
    dataAvailable signalForAll.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   428
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   429
    "Modified: / 11-06-2014 / 21:49:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   430
!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   431
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   432
nextPutAll:aCollection
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   433
    "Put all elements of the argument, aCollection onto the receiver."
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   434
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   435
    ^ self nextPutAll: aCollection startingAt: 1 to: aCollection size
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   436
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   437
    "Created: / 09-06-2014 / 21:58:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   438
!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   439
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   440
nextPutAll:aCollection startingAt:firstIndex to: lastIndex
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   441
    "Append the elements with index from firstIndex to lastIndex
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   442
     of the argument, aCollection,  onto the receiver."
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   443
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   444
    closed ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   445
        self class writeErrorSignal signal:'Pipe stream closed'.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   446
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   447
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   448
    (aCollection class == self contentsSpecies) ifTrue:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   449
        | remaining offset written |
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   450
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   451
        remaining := lastIndex - firstIndex + 1.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   452
        offset := firstIndex.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   453
        [ remaining > 0 ] whileTrue:[
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   454
            written := self nextPutBytes: remaining from: aCollection startingAt: offset.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   455
            remaining := remaining - written.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   456
            offset := offset + written.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   457
            remaining > 0 ifTrue:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   458
                self writeWait.
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   459
            ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   460
        ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   461
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   462
    ] ifFalse:[ 
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   463
        super nextPutAll:aCollection startingAt:firstIndex to: lastIndex
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   464
    ].
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   465
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   466
    "Created: / 09-06-2014 / 21:57:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
34
4662b462b28e Fixes for GDBInternalPipeStream w.r.t multiple threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   467
    "Modified: / 06-09-2014 / 16:35:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   468
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   469
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   470
!GDBInternalPipeStream class methodsFor:'documentation'!
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   471
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   472
version_HG
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   473
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   474
    ^ '$Changeset: <not expanded> $'
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   475
! !
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   476
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   477
535e7f16c05a Moved VDBInternalPipeStream from jv:vdb to jv:libgdbs and renamed to GDBInternalPipeStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   478
GDBInternalPipeStream initialize!