1f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly/* 2f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Copyright (C) 2010 The Android Open Source Project 3f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * 4f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Licensed under the Apache License, Version 2.0 (the "License"); 5f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * you may not use this file except in compliance with the License. 6f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * You may obtain a copy of the License at 7f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * 8f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * http://www.apache.org/licenses/LICENSE-2.0 9f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * 10f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Unless required by applicable law or agreed to in writing, software 11f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * distributed under the License is distributed on an "AS IS" BASIS, 12f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * See the License for the specific language governing permissions and 14f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * limitations under the License. 15f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly */ 16f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly 174bbd47e5507d4c47a4d722216606307e45195a0aMartijn Coenenpackage com.android.nfc.dhimpl; 18f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly 194a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonimport com.android.nfc.DeviceHost; 204a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonimport com.android.nfc.DeviceHost.LlcpSocket; 214a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton 224a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonimport java.io.IOException; 234a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton 24f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly/** 25f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * LlcpServiceSocket represents a LLCP Service to be used in a 26f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Connection-oriented communication 27f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly */ 284a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonpublic class NativeLlcpServiceSocket implements DeviceHost.LlcpServerSocket { 29f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly private int mHandle; 30f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly private int mLocalMiu; 31f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly private int mLocalRw; 32f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly private int mLocalLinearBufferLength; 33f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly private int mSap; 34f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly private String mServiceName; 35f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly 367efbf69a37134ccbd86a1f6b4121f16b4a80eaaeNick Pelly public NativeLlcpServiceSocket(){ } 37f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly 384a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton private native NativeLlcpSocket doAccept(int miu, int rw, int linearBufferLength); 394a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton @Override 404a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton public LlcpSocket accept() throws IOException { 414a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton LlcpSocket socket = doAccept(mLocalMiu, mLocalRw, mLocalLinearBufferLength); 424a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton if (socket == null) throw new IOException(); 434a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton return socket; 44f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly } 45f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly 464a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton private native boolean doClose(); 474a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton @Override 484a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton public void close() throws IOException { 494a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton if (!doClose()) { 504a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton throw new IOException(); 514a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton } 52f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly } 53f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly} 54