mercurial/HGCommandServer.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 08 Jan 2019 09:35:11 +0000
changeset 866 8a885a75daa9
parent 509 f92210d4585b
child 531 eeca62b217c6
permissions -rw-r--r--
Issue 256: fix parsing branch name from changelog To retrieve a branch of an changeset, `stx:libscm` uses `{branch}` branch keyword and then parses it as "name list". However, according to documentation it is a single string: branch String. The name of the branch on which the changeset was committed. This obviously caused problems when branch name had spaces in it. This commit fixes the problem. One remaining thing is that `stx:libscm` technically allows a changeset to be in more than one branch which seems to be impossible in Mercurial itself. This should be investigated and fixed, eventually.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
335
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
     2
stx:libscm - a new source code management library for Smalltalk/X
509
f92210d4585b Updated copyright notice.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     3
Copyright (C) 2012-2015 Jan Vrany
335
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
     4
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
     5
This library is free software; you can redistribute it and/or
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
     7
License as published by the Free Software Foundation; either
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
     8
version 2.1 of the License. 
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
335
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    10
This library is distributed in the hope that it will be useful,
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    13
Lesser General Public License for more details.
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    14
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    16
License along with this library; if not, write to the Free Software
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'stx:libscm/mercurial' }"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
Object subclass:#HGCommandServer
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
    22
	instanceVariableNames:'repository pid input output state readerwriter encoder channel_o
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
    23
		channel_e channel_r channel_d channel_I channel_L channel_M
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
    24
		command'
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
    25
	classVariableNames:'IdleTimeout'
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
    26
	poolDictionaries:'HGDebugFlags'
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'SCM-Mercurial-Internal'
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
    30
ReadStream subclass:#InputChannel
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
    31
	instanceVariableNames:'server id lock rlock binary closed'
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
	classVariableNames:''
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
	poolDictionaries:''
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
	privateIn:HGCommandServer
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
    37
WriteStream subclass:#OutputChannel
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
	instanceVariableNames:'server id lock rlock'
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
	classVariableNames:''
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
	poolDictionaries:''
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
	privateIn:HGCommandServer
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!HGCommandServer class methodsFor:'documentation'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
copyright
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
"
335
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    48
stx:libscm - a new source code management library for Smalltalk/X
509
f92210d4585b Updated copyright notice.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    49
Copyright (C) 2012-2015 Jan Vrany
335
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    50
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    51
This library is free software; you can redistribute it and/or
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    52
modify it under the terms of the GNU Lesser General Public
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    53
License as published by the Free Software Foundation; either
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    54
version 2.1 of the License. 
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
335
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    56
This library is distributed in the hope that it will be useful,
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    57
but WITHOUT ANY WARRANTY; without even the implied warranty of
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    58
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    59
Lesser General Public License for more details.
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    60
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    61
You should have received a copy of the GNU Lesser General Public
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    62
License along with this library; if not, write to the Free Software
7e19ab19148b Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 256
diff changeset
    63
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
!HGCommandServer class methodsFor:'initialization'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
initialize
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    "Invoked at system start or when the class is dynamically loaded."
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    "/ please change as required (and remove this comment)
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
    74
    IdleTimeout"[ms]":= 1000 * 60   "= 1min"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
    76
    "Modified: / 09-03-2013 / 22:25:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
!HGCommandServer class methodsFor:'instance creation'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
new
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    "return an initialized instance"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    ^ self basicNew initialize.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!HGCommandServer methodsFor:'accessing'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
238
aaf120ddecdb Remover repository instvar deom command server to allow for GC.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 236
diff changeset
    89
repository:anHGRepository
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
    90
    repository := anHGRepository.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
    92
    "Modified: / 05-03-2013 / 19:35:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
!HGCommandServer methodsFor:'executing'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
execute: anHGCommand
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "Executes an HG command"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   100
    | spin status result |
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   101
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   102
    state ~~ #connected ifTrue:[
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   103
        "/spin-lock wait...
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   104
        [ #(disconnected connected) includes: state ] whileFalse:[
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   105
            Delay waitForMilliseconds: 15.
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   106
        ].
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   107
        state == #disconnected ifTrue:[
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   108
            self start
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   109
        ]
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   110
    ].
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   111
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   112
    repository synchronized:[
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   113
        command := anHGCommand.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   114
        anHGCommand initialize.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   115
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   116
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   117
        self runcommand: command.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   118
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   119
        spin := SemaphoreSet with: channel_r readSemaphore with: anHGCommand errors readSemaphore.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   120
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   121
        status := [
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   122
            [ spin wait ~~ channel_r readSemaphore ] whileTrue:[ anHGCommand signal ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   123
            OperatingSystem osProcessStatusClass pid:nil status: #exit code: channel_r nextLongNet core:false.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   124
        ] ensure:[
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   125
            "/Close channels
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   126
            channel_o close.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   127
            channel_e close.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   128
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   129
            "/Command terminated - this match signaling in HGCommand>>execute
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   130
            command blocker signal. 
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   131
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   132
            "/Signal blockers if workers hasn't been at all spawned...
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   133
            command outputReader isNil ifTrue:[command blocker signal].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   134
            command errorReader isNil ifTrue:[command blocker signal].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   135
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   136
            "/Wait for eventual workers to finish"
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   137
            command blocker wait.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   139
            "/Reset streams...
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   140
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   141
                Logger log: 'cmdsrv: channel o content: ' , channel_o contents printString severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   142
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   143
            channel_e reset.
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   144
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   145
               Logger log: 'cmdsrv: channel e content: ' , channel_e contents printString severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   146
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   147
            channel_o reset.
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   148
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   149
                Logger log: 'cmdsrv: runcommand finished' severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   150
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   151
            channel_r reset.
235
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   152
        ].
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   153
        anHGCommand signal.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   154
        command := nil.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   155
        result := anHGCommand status: status result: anHGCommand result.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    ].
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   157
    ^result.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    "Created: / 24-02-2013 / 15:10:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   160
    "Modified (format): / 06-03-2013 / 00:34:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   161
!
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   162
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   163
old_execute: anHGCommand
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   164
    "Executes an HG command"
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   165
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   166
    | spin status blocker result |
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   167
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   168
    state ~~ #connected ifTrue:[
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   169
        "/spin-lock wait...
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   170
        [ #(disconnected connected) includes: state ] whileFalse:[
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   171
            Delay waitForMilliseconds: 15.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   172
        ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   173
        state == #disconnected ifTrue:[
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   174
            self start
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   175
        ]
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   176
    ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   177
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   178
    repository synchronized:[
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   179
        command := anHGCommand.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   180
        anHGCommand initialize.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   181
        blocker := command blocker.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   182
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   183
        self runcommand: command.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   184
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   185
        anHGCommand spawn: [ 
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   186
            status := OperatingSystem osProcessStatusClass pid:nil status: #exit code: channel_r nextLongNet core:false.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   187
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   188
            channel_e close.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   189
            channel_o close.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   190
            command outputReader isNil ifTrue:[
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   191
                Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   192
                    Logger log: 'cmdsrv: no output reader, signalling blocker' severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   193
                ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   194
                blocker signal
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   195
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   196
            command errorReader isNil ifTrue:[
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   197
                Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   198
                    Logger log: 'cmdsrv: no error reader, signalling blocker' severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   199
                ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   200
                blocker signal
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   201
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   202
        ] name: 'command server result reader'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   203
        spin := SemaphoreSet with: blocker with: anHGCommand errors readSemaphore.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   204
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   205
        [
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   206
            [ spin wait ~~ blocker ] whileTrue:[ anHGCommand signal ]
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   207
        ] ensure:[
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   208
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   209
                Logger log: 'cmdsrv: channel o content: ' , channel_o contents printString severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   210
            ].
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   211
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   212
                Logger log: 'cmdsrv: reseting channel o' severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   213
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   214
            channel_e reset.
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   215
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   216
                Logger log: 'cmdsrv: channel e content: ' , channel_o contents printString severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   217
            ].
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   218
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   219
                Logger log: 'cmdsrv: reseting channel e' severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   220
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   221
            channel_o reset.
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   222
            Trace ifTrue:[
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   223
                Logger log: 'cmdsrv: runcommand finished' severity: #trace facility: 'HG'.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   224
            ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   225
            command outputReader notNil ifTrue:[command outputReader terminate].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   226
            command errorReader notNil ifTrue:[command errorReader terminate].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   227
        ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   228
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   229
        anHGCommand signal.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   230
        command := nil.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   231
        result := anHGCommand status: status result: anHGCommand result.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   232
    ].
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   233
    ^result.
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   234
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   235
    "Created: / 05-03-2013 / 23:49:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
!HGCommandServer methodsFor:'initialization'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
initialize
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
    "Invoked when a new instance is created."
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
    "/ please change as required (and remove this comment)
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
    "/ repository := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    "/ pid := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
    "/ input := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
    "/ output := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
    state := #disconnected.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
    "/ readerwriter := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    "/ encoder := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
    "/ channel_o := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
    "/ channel_e := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    "/ channel_r := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
    "/ channel_d := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
    "/ channel_I := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
    "/ channel_L := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
    "/ super initialize.   -- commented since inherited method does nothing
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
    "Modified: / 24-02-2013 / 14:55:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
!HGCommandServer methodsFor:'private'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
arguments
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
    ^{
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
        HGCommand hgCommand .
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
"/        '--debug' . '--verbose'.
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   269
        '--cwd' . repository pathName  .
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
        '--config' . 'ui.interactive=True' .
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
        'serve' .
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
        '--cmdserver' . 'pipe' .
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
    }
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
    "Created: / 24-02-2013 / 12:02:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   276
    "Modified: / 05-03-2013 / 19:37:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
channelWithId: channelId
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   280
    channelId == $o codePoint ifTrue:[
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   281
        ^ channel_o
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   282
    ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   283
    channelId == $e codePoint ifTrue:[
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   284
        ^ channel_e
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   285
    ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   286
    channelId == $r codePoint ifTrue:[
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   287
        ^ channel_r
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   288
    ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   289
    channelId == $d codePoint ifTrue:[
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   290
        ^ channel_d
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   291
    ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   292
    channelId == $I codePoint  ifTrue:[
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   293
        ^ channel_I
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   294
    ] .
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   295
    channelId == $L codePoint  ifTrue:[
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   296
        ^ channel_L
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   297
    ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   298
    channelId == $M codePoint ifTrue:[
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
        ^ channel_M
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
    ].
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   301
    self error: 'Invalid channel: ', channelId
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
    "Created: / 24-02-2013 / 12:59:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   304
    "Modified: / 03-03-2013 / 14:14:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
connect
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
    | label |
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
    state := #connecting.
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   312
    Trace ifTrue:[
235
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   313
        Logger log: 'cmdsrv: connecting...' severity: #trace facility: 'HG'.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
    label := channel_o next: 13.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
    label = 'capabilities:' ifFalse:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
        HGCommandError raiseErrorString: 'Invalid hello message: ', label.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
    channel_o nextLine.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    label := channel_o next: 9.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
    label = 'encoding:' ifFalse:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
        HGCommandError raiseErrorString: 'Expected ''encoding:'' message, got: ''', label , ''''.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
    encoder := CharacterEncoder encoderFor: (channel_o nextAvailable: 1000).
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   325
    channel_o reset.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    state := #connected.
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   327
    Trace ifTrue:[
235
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   328
        Logger log: 'cmdsrv: connected...' severity: #trace facility: 'HG'.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
    "Created: / 24-02-2013 / 12:19:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   332
    "Modified: / 06-03-2013 / 00:05:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   335
runcommand: anHGCommand
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   336
    "Issue runcommand command to the server"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   337
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   338
    | args argslen |
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   339
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   340
    args := OrderedCollection streamContents:[:s|
235
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   341
        anHGCommand workingDirectory notNil ifTrue:[
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   342
            s nextPut: '--cwd'; nextPut: anHGCommand workingDirectory.
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   343
        ].
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   344
        anHGCommand argumentsGlobalOn:s.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   345
        s nextPut:anHGCommand command.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   346
        anHGCommand argumentsCommandOn:s.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   347
    ].
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   348
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   349
    Trace ifTrue:[
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   350
        Logger log: 'cmdsrv: runcommand: ' , (args asStringWith:Character space)  severity: #trace facility: 'HG'.
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   351
    ].
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   352
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   353
    args := String streamContents:[:s|
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   354
        args 
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   355
            do:[:e|s nextPutAll: (encoder encodeString: e)]
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   356
            separatedBy:[s nextPut: (Character codePoint: 0)]].
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   357
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   358
    argslen := args size.
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   359
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   360
    output 
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   361
        nextPutLine:'runcommand';
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   362
        nextPutLongNet: argslen;
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   363
        nextPutAll: args
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   364
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   365
    "Created: / 03-03-2013 / 16:38:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   366
    "Modified: / 06-03-2013 / 02:30:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   367
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   368
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
startReaderWriter
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
    "Initialize channels"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   373
    channel_o := InputChannel id: $o server: self.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   374
    channel_e := InputChannel id: $e server: self.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   375
    channel_r := InputChannel id: $r server: self.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   376
    channel_r binary.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   377
    channel_d := InputChannel id: $d server: self.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   379
    channel_I := OutputChannel id: $I server: self.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   380
    channel_L := OutputChannel id: $L server: self.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   381
    channel_M := OutputChannel id: $M server: self.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
    readerwriter := [
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   384
        [ state ~~ #disconnecting and:[ input isOpen ] ] whileTrue:[
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   385
            (input readWaitWithTimeoutMs: IdleTimeout) ifTrue:[
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   386
                "Timeouted. Stop the readwrite process, but only if no command is
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   387
                 running!!"
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   388
                command isNil ifTrue:[
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   389
                    Trace ifTrue:[
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   390
                        Logger log: 'cmdsrv: inactive for too long' severity: #trace facility: 'HG'.
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   391
                    ].
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   392
                    self stop
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   393
                ]
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   394
            ] ifFalse:[
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   395
                "Data available"
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   396
                input isOpen not ifFalse:[
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   397
                    self update
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   398
                ].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
            ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
        ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
    ] newProcess.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
    readerwriter addExitAction:[
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   404
        input := nil.
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   405
        output := nil.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
        readerwriter := nil.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
        state := #disconnected.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
    ].
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   409
    readerwriter name: 'HG Reader/Writer: ', repository pathName.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
    readerwriter resume.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
    "Created: / 24-02-2013 / 12:47:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
242
1b09c8551830 Fixes for command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   413
    "Modified: / 06-03-2013 / 02:08:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
update
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
    "Reads from input stream and updates corresponding channel"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   419
    | channel len data id |
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
    input readWait.
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   422
    id := input next.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   423
    channel := self channelWithId: id.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
    (channel == channel_I or:[channel == channel_L]) ifTrue:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
        self shouldImplement.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
    len := input nextUnsignedLongNet.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
    data := input next: len.
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   429
    channel update: data encoder: encoder.
233
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   430
    command notNil ifTrue:[
236
24c5758b489f Fixed bug in spawning workers.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 235
diff changeset
   431
        channel == channel_o ifTrue:[
233
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   432
            command spawnOutputReaderOn: channel_o
236
24c5758b489f Fixed bug in spawning workers.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 235
diff changeset
   433
        ] ifFalse:[channel == channel_e ifTrue:[
233
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   434
            command spawnErrorReaderOn: channel_e
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   435
        ]].
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   436
    ].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
    "Created: / 24-02-2013 / 14:06:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
236
24c5758b489f Fixed bug in spawning workers.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 235
diff changeset
   439
    "Modified: / 04-03-2013 / 00:02:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
!HGCommandServer methodsFor:'start & stop'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
start
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
    "Starts the server and returns"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
    | inputPipe outputPipe environment args |
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
    state := #starting.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
    inputPipe := NonPositionableExternalStream makePipe.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
    input := inputPipe first.
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   452
    input binary.
244
050a3c708f5b Bugfix for Linux - set lineEndTransparent onlt on Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 242
diff changeset
   453
    OperatingSystem isMSWINDOWSlike ifTrue:[
050a3c708f5b Bugfix for Linux - set lineEndTransparent onlt on Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 242
diff changeset
   454
        input lineEndTransparent.
050a3c708f5b Bugfix for Linux - set lineEndTransparent onlt on Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 242
diff changeset
   455
    ].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
    outputPipe := NonPositionableExternalStream makePipe.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
    output := outputPipe second.
244
050a3c708f5b Bugfix for Linux - set lineEndTransparent onlt on Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 242
diff changeset
   459
    OperatingSystem isMSWINDOWSlike ifTrue:[
050a3c708f5b Bugfix for Linux - set lineEndTransparent onlt on Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 242
diff changeset
   460
        output lineEndTransparent.
050a3c708f5b Bugfix for Linux - set lineEndTransparent onlt on Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 242
diff changeset
   461
    ].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
"/    output binary.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
    args := self arguments.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
    OperatingSystem isMSWINDOWSlike ifTrue:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
        args := String streamContents:[:s|
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
            args
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
                do:[:each | s nextPut:$"; nextPutAll: each; nextPut: $"]
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
                separatedBy: [ s space ]
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
        ]
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
    environment := OperatingSystem isUNIXlike
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
                    ifTrue:[OperatingSystem getEnvironment copy]
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
                    ifFalse:[environment := Dictionary new].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
    environment at: 'HGEDITOR' put: 'true'.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
    environment at:'LANG' put:'C'.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
    Processor monitor:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
        pid := OperatingSystem exec:(HGCommand hgCommand) withArguments: args
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
                environment:environment
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
                fileDescriptors:{outputPipe first fileDescriptor . inputPipe second fileDescriptor . 3}
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
                fork:true
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
                newPgrp:false
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
                inDirectory: Filename currentDirectory pathName.
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   487
        Trace ifTrue:[
235
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   488
            Logger log: 'cmdsrv: server started' severity: #trace facility: 'HG'.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
        ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
        pid.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    ] action:[:stat |
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   492
        Trace ifTrue:[
235
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   493
            Logger log: 'cmdsrv: server terminated' severity: #trace facility: 'HG'.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
        ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
    inputPipe second close.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
    outputPipe first close.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
    pid isNil ifTrue:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
        HGCommandError raiseErrorString: 'Cannot start command server'.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
        input close.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
        output close.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
        ^ self.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
    encoder := CharacterEncoder encoderFor:#ascii.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
    self startReaderWriter.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
    self connect.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
    "Created: / 24-02-2013 / 11:40:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
244
050a3c708f5b Bugfix for Linux - set lineEndTransparent onlt on Windows.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 242
diff changeset
   512
    "Modified: / 07-03-2013 / 09:29:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
stop
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
    state == #disconnected ifFalse:[
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   517
        Trace ifTrue:[
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   518
            Logger log: 'cmdsrv: server terminating' severity: #trace facility: 'HG'.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
        ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
        state := #disconnecting.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
        readerwriter terminate.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
        input close.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
        output close.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
    "Created: / 24-02-2013 / 14:20:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
239
0f793d531d0d Terminate command server's after some time of inactivity (currently 1min),
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 238
diff changeset
   527
    "Modified: / 05-03-2013 / 19:08:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   530
!HGCommandServer::InputChannel class methodsFor:'documentation'!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   531
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   532
documentation
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   533
"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   534
    An input channel (hg serve --> smalltalk)
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   535
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   536
    [author:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   537
        Jan Vrany <jan.vrany@fit.cvut.cz>
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   538
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   539
    [instance variables:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   540
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   541
    [class variables:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   542
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   543
    [see also:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   544
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   545
"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   546
! !
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   547
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   548
!HGCommandServer::InputChannel class methodsFor:'instance creation'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
id: id server: server
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
    ^self basicNew setId: id server: server
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
    "Created: / 24-02-2013 / 12:52:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   556
!HGCommandServer::InputChannel methodsFor:'accessing'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   558
contents
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   559
    ^collection copyTo: readLimit
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   560
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   561
    "Created: / 05-03-2013 / 22:58:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   562
!
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   563
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
id
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
    ^ id
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   566
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   567
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   568
readSemaphore
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   569
    ^rlock
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   570
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   571
    "Created: / 03-03-2013 / 16:40:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   574
!HGCommandServer::InputChannel methodsFor:'initialization'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   576
reset
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   577
    closed := false.
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   578
    collection := (binary ifTrue:[ByteArray new: 4] ifFalse:[String new: 100]). 
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   579
    position := 0.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   580
    readLimit := 0.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   581
    writeLimit := 0.
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   582
    rlock count > 0 ifTrue:[rlock consume: rlock count].
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   583
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   584
    "Created: / 03-03-2013 / 13:18:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   585
    "Modified: / 06-03-2013 / 00:25:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   586
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   587
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   588
setId: aCharacter server: anHGCommandServer    
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
    id := aCharacter.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
    server := anHGCommandServer.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
    lock := Semaphore forMutualExclusion.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
    rlock := Semaphore new:0.
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   593
    binary := false.
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   594
    self reset.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
    "Created: / 24-02-2013 / 12:51:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   597
    "Modified: / 06-03-2013 / 00:25:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   600
!HGCommandServer::InputChannel methodsFor:'misc'!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   601
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   602
binary
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   603
    "switch to binary mode. In binary mode, reading of text streams
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   604
     returns byte-valued integers instead of characters; writing expects
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   605
     byte-valued integers respectively.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   606
     Ignored here, but added to make internalStreams protocol compatible 
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   607
     with externalStreams."
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   608
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   609
    binary := true.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   610
    collection := collection asByteArray
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   611
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   612
    "Created: / 03-03-2013 / 14:20:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   613
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   614
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   615
close
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   616
    lock critical:[
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   617
        closed := true.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   618
    ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   619
    self readSignal
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   620
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   621
    "Created: / 03-03-2013 / 15:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   622
    "Modified: / 03-03-2013 / 17:25:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   623
! !
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   624
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   625
!HGCommandServer::InputChannel methodsFor:'private'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
growCollection:minNewSize
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
    "grow the streamed collection to at least minNewSize"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
    |oldSize newSize newColl|
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
    oldSize := collection size.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
    (oldSize == 0) ifTrue:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
	newSize := minNewSize
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
    ] ifFalse:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
	newSize := oldSize * 2.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   637
	(newSize < minNewSize) ifTrue:[newSize := minNewSize].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
    collection isFixedSize ifTrue:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
	newColl := collection species new:newSize.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   641
	newColl replaceFrom:1 to:oldSize with:collection startingAt:1.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
	collection := newColl
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   643
    ] ifFalse:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
	collection grow:newSize
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
    ].
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
    "Modified: 19.8.1997 / 17:53:11 / cg"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   648
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   649
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   650
trace: message
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   651
    HGDebugFlags trace ifTrue:[
235
3d8ef499d7d9 Command server is now used by default.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   652
        Logger log: ('cmdsrv-ichannel[', id, '] {', Processor activeProcess id printString, '}: ', message) severity: #trace facility: 'HG'.
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   653
    ]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   654
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   655
    "Created: / 03-03-2013 / 18:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
256
49cce5802570 Introduced HGDebugFlags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 244
diff changeset
   656
    "Modified: / 09-03-2013 / 22:14:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   657
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   658
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   659
!HGCommandServer::InputChannel methodsFor:'reading'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   660
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   661
next
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   662
    ^self readWaitWithTimeoutMs: nil do: [ super next ].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   663
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   664
    "Created: / 24-02-2013 / 13:30:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   665
    "Modified: / 03-03-2013 / 19:17:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   666
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   667
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   668
nextByte    
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   669
    self assert: binary.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   670
    ^self next
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   671
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   672
    "Created: / 03-03-2013 / 14:21:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   673
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   674
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   675
nextOrNil
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   676
    ^self readWaitWithTimeoutMs: nil do: [ super nextOrNil ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   677
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   678
    "Created: / 03-03-2013 / 15:39:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   679
    "Modified: / 03-03-2013 / 19:18:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   680
!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   681
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   682
peek
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   683
    ^self readWaitWithTimeoutMs: nil do: [ super peek ].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   684
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   685
    "Created: / 24-02-2013 / 13:30:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   686
    "Modified: / 03-03-2013 / 19:18:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   687
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   688
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   689
!HGCommandServer::InputChannel methodsFor:'testing'!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   690
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   691
atEnd
233
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   692
    ^self readWaitWithTimeoutMs: nil do:[
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   693
        closed and:[((position-ZeroPosition+1) > readLimit)]
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   694
    ].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   695
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   696
    "Created: / 03-03-2013 / 15:36:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
233
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   697
    "Modified: / 03-03-2013 / 19:57:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   698
! !
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   699
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   700
!HGCommandServer::InputChannel methodsFor:'updating'!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   701
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   702
update: bytes encoder: encoder
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   703
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   704
    | string |
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   705
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   706
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   707
    self assert: closed not.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   708
    string := binary 
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   709
                ifTrue:[bytes] 
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   710
                ifFalse:[encoder decodeString: bytes].
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   711
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   712
    lock critical:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   713
        | len |
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   714
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   715
        len := string size.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   716
        readLimit + len > collection size ifTrue:[
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   717
            self growCollection:readLimit + len.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   718
        ].
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   719
        collection replaceFrom: readLimit + 1 count: len with:string startingAt:1.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   720
        readLimit := readLimit + len.
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   721
        self trace: 'read ' ,bytes size printString, ' bytes'.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   722
        self readSignal.
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   723
    ].
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   724
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   725
    "Created: / 03-03-2013 / 14:01:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   726
    "Modified: / 03-03-2013 / 19:23:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   727
! !
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   728
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   729
!HGCommandServer::InputChannel methodsFor:'waiting for I/O'!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   730
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   731
readSignal
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   732
    self trace: 'signalling data'.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   733
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   734
    rlock signal.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   735
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   736
    "Created: / 03-03-2013 / 17:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240
e04b6e515237 HGCommandServer>>execute: refactored & hopefully fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   737
    "Modified: / 06-03-2013 / 00:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   738
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   739
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   740
readWaitWithTimeoutMs:millis
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   741
    ^self readWaitWithTimeoutMs: millis do:[]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   742
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   743
    "Created: / 03-03-2013 / 17:23:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   744
    "Modified: / 03-03-2013 / 19:17:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   745
!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   746
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   747
readWaitWithTimeoutMs:millis do: block
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   748
    [
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   749
        lock critical:[
233
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   750
            (closed or:[((position-ZeroPosition+1) <= readLimit)]) ifTrue:[
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   751
                ^block value
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   752
            ].
233
d9a8bb2aaa0b Log command works using command server.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 232
diff changeset
   753
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   754
        ].
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   755
        self trace: 'waiting for data'.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   756
        rlock waitWithTimeoutMs:millis.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   757
        self trace: 'data ready'.
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   758
    ] loop
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   759
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   760
    "Created: / 03-03-2013 / 19:16:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   761
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   762
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   763
!HGCommandServer::OutputChannel class methodsFor:'documentation'!
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   764
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   765
documentation
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   766
"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   767
    An input channel (smalltalk --> hg server)
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   768
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   769
    [author:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   770
        Jan Vrany <jan.vrany@fit.cvut.cz>
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   771
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   772
    [instance variables:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   773
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   774
    [class variables:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   775
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   776
    [see also:]
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   777
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   778
"
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   779
! !
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   780
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   781
!HGCommandServer::OutputChannel class methodsFor:'instance creation'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   782
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   783
id: id server: server
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   784
    ^self basicNew setId: id server: server
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   785
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   786
    "Created: / 24-02-2013 / 12:52:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   787
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   788
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   789
!HGCommandServer::OutputChannel methodsFor:'accessing'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   790
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   791
id
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   792
    ^ id
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   793
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   794
232
718711b15cea More work on command server. Not yet finished, though.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 231
diff changeset
   795
!HGCommandServer::OutputChannel methodsFor:'initialization'!
231
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   796
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   797
setId: aCharacter server: anHGCommandServer
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   798
    id := aCharacter.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   799
    server := anHGCommandServer.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   800
    lock := Semaphore forMutualExclusion.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   801
    rlock := Semaphore new:0.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   802
    collection := String new: 100.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   803
    position := 0.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   804
    readLimit := 0.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   805
    writeLimit := 0.
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   806
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   807
    "Created: / 24-02-2013 / 12:51:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   808
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   809
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   810
!HGCommandServer class methodsFor:'documentation'!
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   811
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   812
version_HG
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   813
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   814
    ^ '$Changeset: <not expanded> $'
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   815
! !
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   816
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   817
eb0f01855893 Initial version of HGCommandServer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   818
HGCommandServer initialize!