Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: pkg/fletch_agent/tool/client.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/fletch_agent/lib/messages.dart ('k') | pkg/fletch_sdk_readme.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file.
4
5 library fletch_agent.client;
6
7 import 'dart:io';
8 import 'dart:typed_data';
9
10 import '../lib/messages.dart';
11 import '../lib/agent_connection.dart';
12
13 void printUsage() {
14 print('''
15 Usage:
16 The Fletch agent command line client supports the following flags:
17
18 --port: the port on which to connect, default: 12121
19 --host: the ip address on which to connect, default: 127.0.0.1
20 --cmd: the command to send to the Fletch agent, default: 0 (START_VM)
21 --pid: the pid of the vm to stop, only used when --cmd=1 (STOP_VM)
22 --signal: which signal to send to the vm. Requires the --pid option to
23 be specified
24 --pkg: path to the package file to be used with --cmd=3 (UPGRADE_PKG)
25
26 Example: Get the version of the agent running on 192.168.1.1:
27 dart client.dart --cmd=4 --host=192.168.1.1.''');
28 exit(1);
29 }
30
31 /// Small dart program to issue commands to the fletch agent.
32 void main(List<String> arguments) async {
33 // Startup the agent listening on specified port.
34 int port = 12121;
35 String host = '127.0.0.1';
36 int cmd = RequestHeader.START_VM;
37 int id = 1; // The default id used.
38 int pid;
39 int signal;
40 Socket socket;
41 String packageFile;
42
43 void checkSuccess(ReplyHeader header) {
44 if (header == null) {
45 print('Received invalid reply. Could not parse header.');
46 socket.close();
47 exit(1);
48 }
49 if (header.id != id) {
50 print('Received out of sync message. Expected id $id and got '
51 'id ${header.id}');
52 socket.close();
53 exit(1);
54 }
55 if (header.result != ReplyHeader.SUCCESS) {
56 print('Received reply with id ${header.id} and result '
57 '${header.result}');
58 socket.close();
59 exit(1);
60 }
61 }
62
63 for (var argument in arguments) {
64 var parts = argument.split('=');
65 if (parts[0] == '--cmd') {
66 if (parts.length != 2) {
67 printUsage();
68 }
69 cmd = int.parse(parts[1]);
70 } else if (parts[0] == '--id') {
71 if (parts.length != 2) {
72 printUsage();
73 }
74 id = int.parse(parts[1]);
75 } else if (parts[0] == '--pid') {
76 if (parts.length != 2) {
77 printUsage();
78 }
79 pid = int.parse(parts[1]);
80 } else if (parts[0] == '--host') {
81 if (parts.length != 2) {
82 printUsage();
83 }
84 host = parts[1];
85 } else if (parts[0] == '--port') {
86 if (parts.length != 2) {
87 printUsage();
88 }
89 port = int.parse(parts[1]);
90 } else if (parts[0] == '--signal') {
91 if (parts.length != 2) {
92 printUsage();
93 }
94 signal = int.parse(parts[1]);
95 } else if (parts[0] == '--pkg') {
96 if (parts.length != 2) {
97 printUsage();
98 }
99 packageFile = parts[1];
100 }
101 }
102
103 try {
104 socket = await Socket.connect(host, port);
105 } on SocketException catch (error) {
106 print('Could not connect to Fletch Agent on \'$host:$port\'. '
107 'Received error: $error');
108 printUsage();
109 }
110
111 var connection = new AgentConnection(socket);
112 switch (cmd) {
113 case RequestHeader.START_VM:
114 VmData vmData = await connection.startVm();
115 print('Started VM: id=${vmData.id}, port=${vmData.port}');
116 break;
117 case RequestHeader.STOP_VM:
118 if (pid == null) {
119 print('Please specify which pid to stop with --pid=<pid>');
120 exit(1);
121 }
122 await connection.stopVm(pid);
123 print('Stopped VM: id=$pid');
124 break;
125 case RequestHeader.LIST_VMS:
126 await connection.listVms();
127 break;
128 case RequestHeader.UPGRADE_AGENT:
129 if (packageFile == null) {
130 print('Please specify the path to the package with --pkg=<path>');
131 exit(1);
132 }
133 Uri packageUri = new Uri.file(packageFile);
134 List<String> nameParts = packageUri.pathSegments.last.split('_');
135 if (nameParts.length != 3 || nameParts[0] != 'fletch-agent') {
136 print('A fletch-agent package must have a name of the form\n'
137 ' fletch-agent_<version>_<platform>');
138 exit(1);
139 }
140 String version = nameParts[1];
141 List<int> data = await new File(packageFile).readAsBytes();
142 print('Sending package for version $version'
143 ' (length: ${data.length} bytes).');
144 await connection.upgradeAgent(version, data);
145 print('Update finished');
146 break;
147 case RequestHeader.FLETCH_VERSION:
148 String version = await connection.fletchVersion();
149 print('Fletch Agent Version $version');
150 break;
151 case RequestHeader.SIGNAL_VM:
152 if (pid == null) {
153 print('Please specify which pid to stop with --pid=<pid>');
154 printUsage();
155 exit(1);
156 }
157 if (signal == null) {
158 print('Please specify the signal to send to pid.');
159 printUsage();
160 exit(1);
161 }
162 await connection.signalVm(pid, signal);
163 print('Send signal $signal to VM: id=$pid');
164 break;
165 default:
166 print('Invalid command: $cmd');
167 exit(1);
168 }
169 socket.close();
170 }
OLDNEW
« no previous file with comments | « pkg/fletch_agent/lib/messages.dart ('k') | pkg/fletch_sdk_readme.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698