Method: setLogger(IDbgpRawLogger)

1: /*
2: * #%~
3: * org.overture.ide.debug
4: * %%
5: * Copyright (C) 2008 - 2014 Overture
6: * %%
7: * This program is free software: you can redistribute it and/or modify
8: * it under the terms of the GNU General Public License as
9: * published by the Free Software Foundation, either version 3 of the
10: * License, or (at your option) any later version.
11: *
12: * This program is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: * GNU General Public License for more details.
16: *
17: * You should have received a copy of the GNU General Public
18: * License along with this program. If not, see
19: * <http://www.gnu.org/licenses/gpl-3.0.html>.
20: * #~%
21: */
22: package org.overture.ide.debug.core.dbgp.internal.packets;
23:
24: import java.io.IOException;
25: import java.io.OutputStream;
26:
27: import org.overture.ide.debug.core.dbgp.DbgpRequest;
28:
29: public class DbgpPacketSender
30: {
31:         private final Object lock = new Object();
32:
33:         private final OutputStream output;
34:
35:         private IDbgpRawLogger logger;
36:
37:         public DbgpPacketSender(OutputStream output)
38:         {
39:                 if (output == null)
40:                 {
41:                         throw new IllegalArgumentException();
42:                 }
43:
44:                 this.output = output;
45:         }
46:
47:         public void setLogger(IDbgpRawLogger logger)
48:         {
49:                 this.logger = logger;
50:         }
51:
52:         public void sendCommand(DbgpRequest command) throws IOException
53:         {
54:                 if (logger != null)
55:                 {
56:                         logger.log(command);
57:                 }
58:
59:                 synchronized (lock)
60:                 {
61:                         command.writeTo(output);
62:                         output.write(0);
63:                         output.flush();
64:                 }
65:         }
66: }