xref: /AOO41X/main/jurt/com/sun/star/lib/uno/protocols/urp/PendingRequests.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package com.sun.star.lib.uno.protocols.urp;
29 
30 import com.sun.star.lib.uno.environments.remote.ThreadId;
31 import com.sun.star.uno.IMethodDescription;
32 import java.util.HashMap;
33 import java.util.Stack;
34 
35 final class PendingRequests {
36     public PendingRequests() {}
37 
38     public synchronized void push(ThreadId tid, Item item) {
39         Stack s = (Stack) map.get(tid);
40         if (s == null) {
41             s = new Stack();
42             map.put(tid, s);
43         }
44         s.push(item);
45     }
46 
47     public synchronized Item pop(ThreadId tid) {
48         Stack s = (Stack) map.get(tid);
49         Item i = (Item) s.pop();
50         if (s.empty()) {
51             map.remove(tid);
52         }
53         return i;
54     }
55 
56     public static final class Item {
57         public Item(
58             boolean internal, IMethodDescription function, Object[] arguments)
59         {
60             this.internal = internal;
61             this.function = function;
62             this.arguments = arguments;
63         }
64 
65         public final boolean internal;
66         public final IMethodDescription function;
67         public final Object[] arguments;
68     }
69 
70     private final HashMap map = new HashMap(); // from ThreadId to Stack of Item
71 }
72